mirror of
https://github.com/zeldaret/tp
synced 2026-06-03 02:29:59 -04:00
24b72a5302
* cleanup f_pc files * cleanup f_op files * fix a couple f_op_actor_mng functions * minor JSystem work
3143 lines
115 KiB
C++
3143 lines
115 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: d/kankyo/d_kankyo_rain
|
|
//
|
|
|
|
#include "d/d_kankyo_rain.h"
|
|
#include "SSystem/SComponent/c_counter.h"
|
|
#include "d/actor/d_a_player.h"
|
|
#include "d/d_com_inf_game.h"
|
|
#include "dol2asm.h"
|
|
#include "m_Do/m_Do_lib.h"
|
|
#include "JSystem/JUtility/JUTTexture.h"
|
|
#include "string.h"
|
|
#include "SSystem/SComponent/c_math.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
extern "C" static void vectle_calc__FP10DOUBLE_POSP4cXyz();
|
|
extern "C" static void get_vectle_calc__FP4cXyzP4cXyzP4cXyz();
|
|
extern "C" void dKyr_get_vectle_calc__FP4cXyzP4cXyzP4cXyz();
|
|
extern "C" static void dKy_set_eyevect_calc__FP12camera_classP3Vecff();
|
|
extern "C" static void dKy_set_eyevect_calc2__FP12camera_classP3Vecff();
|
|
extern "C" static void dKyr_set_btitex_common__FP9_GXTexObjP7ResTIMG11_GXTexMapID();
|
|
extern "C" static void dKyr_set_btitex__FP9_GXTexObjP7ResTIMG();
|
|
extern "C" void dKyr_lenzflare_move__Fv();
|
|
extern "C" static void dKyr_moon_arrival_check__Fv();
|
|
extern "C" void dKyr_sun_move__Fv();
|
|
extern "C" void dKyr_rain_init__Fv();
|
|
extern "C" static void rain_bg_chk__FP19dKankyo_rain_Packeti();
|
|
extern "C" static void overhead_bg_chk__Fv();
|
|
extern "C" static void forward_overhead_bg_chk__FP4cXyzf();
|
|
extern "C" void dKyr_rain_move__Fv();
|
|
extern "C" static void d_krain_cut_turn_check__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" static void dKr_cullVtx_Set__Fv();
|
|
extern "C" static void dKyr_draw_rev_moon__FPA4_fPPUc();
|
|
extern "C" void dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc();
|
|
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" static void dKyr_evil_draw2__FPA4_fPPUc();
|
|
extern "C" static void dKyr_near_bosslight_check__F4cXyz();
|
|
extern "C" void dKyr_evil_draw__FPA4_fPPUc();
|
|
extern "C" bool getKandelaarFlamePos__9daPy_py_cFv();
|
|
extern "C" extern char const* const d_kankyo_d_kankyo_rain__stringBase0;
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void __dt__4cXyzFv();
|
|
extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
|
|
extern "C" void mDoMtx_XrotM__FPA4_fs();
|
|
extern "C" void mDoMtx_YrotM__FPA4_fs();
|
|
extern "C" void mDoMtx_ZrotM__FPA4_fs();
|
|
extern "C" void mDoLib_project__FP3VecP3Vec();
|
|
extern "C" void __dt__5csXyzFv();
|
|
extern "C" void fopKyM_create__FsiP4cXyzP4cXyzPFPv_i();
|
|
extern "C" void getStatusRoomDt__20dStage_roomControl_cFi();
|
|
extern "C" void getLayerNo__14dComIfG_play_cFi();
|
|
extern "C" void dComIfG_getStageRes__FPCc();
|
|
extern "C" void dComIfGs_PolyDamageOff_Set__FSc();
|
|
extern "C" void isDungeonItem__12dSv_memBit_cCFi();
|
|
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
|
|
extern "C" void getRunEventName__16dEvent_manager_cFv();
|
|
extern "C" void
|
|
set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
|
|
extern "C" void newData__13dDlst_peekZ_cFssPUl();
|
|
extern "C" void __dt__8SNOW_EFFFv();
|
|
extern "C" void __ct__8SNOW_EFFFv();
|
|
extern "C" void __dt__8STAR_EFFFv();
|
|
extern "C" void __ct__8STAR_EFFFv();
|
|
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_pntwind_get_vecpow__FP4cXyz();
|
|
extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
|
|
extern "C" void RoofChk__4dBgSFP12dBgS_RoofChk();
|
|
extern "C" void __ct__11dBgS_GndChkFv();
|
|
extern "C" void __dt__11dBgS_GndChkFv();
|
|
extern "C" void __dt__18dBgS_ObjGndChk_AllFv();
|
|
extern "C" void __ct__18dBgS_CamGndChk_WtrFv();
|
|
extern "C" void __dt__18dBgS_CamGndChk_WtrFv();
|
|
extern "C" void SetObj__16dBgS_PolyPassChkFv();
|
|
extern "C" void __ct__12dBgS_RoofChkFv();
|
|
extern "C" void __dt__12dBgS_RoofChkFv();
|
|
extern "C" void Prepare__12dCcMassS_MngFv();
|
|
extern "C" void checkNowWolfEyeUp__9daPy_py_cFv();
|
|
extern "C" void dKy_get_parcent__Ffff();
|
|
extern "C" void getDaytime__18dScnKy_env_light_cFv();
|
|
extern "C" void dKy_daynight_check__Fv();
|
|
extern "C" void dKy_move_room_ratio__FP12dKy_tevstr_cPSc();
|
|
extern "C" void dKy_efplight_set__FP15LIGHT_INFLUENCE();
|
|
extern "C" void dKy_efplight_cut__FP15LIGHT_INFLUENCE();
|
|
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" void dKy_addcol_fog_set__Fsssf();
|
|
extern "C" void dKy_vrbox_addcol_sky0_set__Fsssf();
|
|
extern "C" void dKy_vrbox_addcol_kasumi_set__Fsssf();
|
|
extern "C" void dKy_GxFog_set__Fv();
|
|
extern "C" void dKy_rain_check__Fv();
|
|
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" void
|
|
dKy_ParticleColor_get_bg__FP4cXyzP12dKy_tevstr_cP8_GXColorP8_GXColorP8_GXColorP8_GXColorf();
|
|
extern "C" void dKy_darkworld_check__Fv();
|
|
extern "C" void __pl__4cXyzCFRC3Vec();
|
|
extern "C" void __ct__5csXyzFsss();
|
|
extern "C" void cM_rad2s__Ff();
|
|
extern "C" void cM_atan2s__Fff();
|
|
extern "C" void cM_rndF__Ff();
|
|
extern "C" void cM_rndFX__Ff();
|
|
extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
|
|
extern "C" void cM3d_VectorProduct2d__Fffffff();
|
|
extern "C" void cLib_addCalc__FPfffff();
|
|
extern "C" void startNearThunderSe__10Z2EnvSeMgrFSc();
|
|
extern "C" void* __nw__FUli();
|
|
extern "C" void reinitGX__6J3DSysFv();
|
|
extern "C" void __register_global_object();
|
|
extern "C" void __construct_array();
|
|
extern "C" void _savegpr_14();
|
|
extern "C" void _savegpr_17();
|
|
extern "C" void _savegpr_18();
|
|
extern "C" void _savegpr_19();
|
|
extern "C" void _savegpr_20();
|
|
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_17();
|
|
extern "C" void _restgpr_18();
|
|
extern "C" void _restgpr_19();
|
|
extern "C" void _restgpr_20();
|
|
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" extern void* __vt__14dBgS_ObjGndChk[12 + 1 /* padding */];
|
|
extern "C" extern void* __vt__19dKankyo_star_Packet[5];
|
|
extern "C" extern void* __vt__19dKankyo_snow_Packet[5];
|
|
extern "C" extern void* __vt__18dBgS_ObjGndChk_All[12];
|
|
extern "C" extern void* __vt__9J3DPacket[5];
|
|
extern "C" u8 now__14mDoMtx_stack_c[48];
|
|
extern "C" u8 sincosTable___5JMath[65536];
|
|
extern "C" u8 mFrameBufferTimg__13mDoGph_gInf_c[4];
|
|
extern "C" u8 m_mode__7dDemo_c[4];
|
|
extern "C" u8 sOldVcdVatCmd__8J3DShape[4];
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
/* 8005B660-8005B708 055FA0 00A8+00 3/3 0/0 0/0 .text vectle_calc__FP10DOUBLE_POSP4cXyz
|
|
*/
|
|
static void vectle_calc(DOUBLE_POS* i_pos, cXyz* o_out) {
|
|
double s = sqrt(i_pos->x * i_pos->x + i_pos->y * i_pos->y + i_pos->z * i_pos->z);
|
|
|
|
if (s != 0.0) {
|
|
o_out->x = i_pos->x / s;
|
|
o_out->y = i_pos->y / s;
|
|
o_out->z = i_pos->z / s;
|
|
} else {
|
|
o_out->x = 0.0;
|
|
o_out->y = 0.0;
|
|
o_out->z = 0.0;
|
|
}
|
|
}
|
|
|
|
/* 8005B708-8005B760 056048 0058+00 7/7 0/0 0/0 .text get_vectle_calc__FP4cXyzP4cXyzP4cXyz */
|
|
static void get_vectle_calc(cXyz* param_0, cXyz* param_1, cXyz* param_2) {
|
|
DOUBLE_POS pos;
|
|
pos.x = param_1->x - param_0->x;
|
|
pos.y = param_1->y - param_0->y;
|
|
pos.z = param_1->z - param_0->z;
|
|
|
|
vectle_calc(&pos, param_2);
|
|
}
|
|
|
|
/* 8005B760-8005B780 0560A0 0020+00 8/8 7/7 11/11 .text dKyr_get_vectle_calc__FP4cXyzP4cXyzP4cXyz
|
|
*/
|
|
void dKyr_get_vectle_calc(cXyz* param_0, cXyz* param_1, cXyz* param_2) {
|
|
get_vectle_calc(param_0, param_1, param_2);
|
|
}
|
|
|
|
/* 8005B780-8005B830 0560C0 00B0+00 2/2 0/0 0/0 .text
|
|
* dKy_set_eyevect_calc__FP12camera_classP3Vecff */
|
|
static void dKy_set_eyevect_calc(camera_class* i_camera, Vec* param_1, f32 param_2, f32 param_3) {
|
|
cXyz tmp;
|
|
get_vectle_calc(&i_camera->lookat.eye, &i_camera->lookat.center, &tmp);
|
|
param_1->x = i_camera->lookat.eye.x + tmp.x * param_2;
|
|
param_1->y = (i_camera->lookat.eye.y + tmp.y * param_3) - 200.0f;
|
|
param_1->z = i_camera->lookat.eye.z + tmp.z * param_2;
|
|
}
|
|
|
|
/* 8005B830-8005B92C 056170 00FC+00 6/6 0/0 0/0 .text
|
|
* dKy_set_eyevect_calc2__FP12camera_classP3Vecff */
|
|
static void dKy_set_eyevect_calc2(camera_class* i_camera, Vec* param_1, f32 param_2, f32 param_3) {
|
|
cXyz tmp;
|
|
DOUBLE_POS pos;
|
|
|
|
pos.x = i_camera->lookat.center.x - i_camera->lookat.eye.x;
|
|
if (param_3 != 0.0f) {
|
|
pos.y = i_camera->lookat.center.y - i_camera->lookat.eye.y;
|
|
} else {
|
|
pos.y = 0.0f;
|
|
}
|
|
pos.z = i_camera->lookat.center.z - i_camera->lookat.eye.z;
|
|
|
|
vectle_calc(&pos, &tmp);
|
|
|
|
param_1->x = i_camera->lookat.eye.x + tmp.x * param_2;
|
|
param_1->y = i_camera->lookat.eye.y + tmp.y * param_3;
|
|
param_1->z = i_camera->lookat.eye.z + tmp.z * param_2;
|
|
|
|
if (param_3 == 0.0f) {
|
|
param_1->y = 0.0f;
|
|
}
|
|
}
|
|
|
|
/* 8005B92C-8005BA24 05626C 00F8+00 5/5 0/0 0/0 .text
|
|
* dKyr_set_btitex_common__FP9_GXTexObjP7ResTIMG11_GXTexMapID */
|
|
static void dKyr_set_btitex_common(GXTexObj* i_obj, ResTIMG* i_img, GXTexMapID i_mapID) {
|
|
GXInitTexObj(i_obj, (&i_img->format + i_img->imageOffset), i_img->width, i_img->height,
|
|
(GXTexFmt)i_img->format, (GXTexWrapMode)i_img->wrapS, (GXTexWrapMode)i_img->wrapT,
|
|
(GXBool)(i_img->mipmapCount > 1));
|
|
|
|
GXInitTexObjLOD(i_obj, (GXTexFilter)i_img->minFilter, (GXTexFilter)i_img->magFilter,
|
|
i_img->minLOD * 0.125f, i_img->maxLOD * 0.125f, i_img->LODBias * 0.01f,
|
|
(GXBool)i_img->biasClamp, (GXBool)i_img->doEdgeLOD,
|
|
(GXAnisotropy)i_img->maxAnisotropy);
|
|
|
|
GXLoadTexObj(i_obj, i_mapID);
|
|
}
|
|
|
|
/* 8005BA24-8005BA48 056364 0024+00 12/12 0/0 0/0 .text dKyr_set_btitex__FP9_GXTexObjP7ResTIMG */
|
|
static void dKyr_set_btitex(GXTexObj* i_obj, ResTIMG* i_img) {
|
|
dKyr_set_btitex_common(i_obj, i_img, GX_TEXMAP0);
|
|
}
|
|
|
|
/* 8005BA48-8005BED8 056388 0490+00 0/0 1/1 0/0 .text dKyr_lenzflare_move__Fv */
|
|
void dKyr_lenzflare_move() {
|
|
dKankyo_sun_Packet* sun_p = g_env_light.mpSunPacket;
|
|
dKankyo_sunlenz_Packet* lenz_p = g_env_light.mpSunLenzPacket;
|
|
camera_class* iVar6 = dComIfGp_getCamera(0);
|
|
|
|
cXyz cStack_48;
|
|
cXyz cStack_54;
|
|
cXyz local_60;
|
|
cXyz cStack_6c;
|
|
if (sun_p->mVisibility < 0.0001f) {
|
|
return;
|
|
}
|
|
dKy_set_eyevect_calc(iVar6, &cStack_48, 4000.0f, 4000.0f);
|
|
dKyr_get_vectle_calc(&cStack_48, sun_p->mPos, &local_60);
|
|
lenz_p->mPositions[0] = sun_p->mPos[0];
|
|
lenz_p->mPositions[1] = sun_p->mPos[0];
|
|
cXyz local_78;
|
|
cXyz cStack_84;
|
|
cXyz local_90;
|
|
mDoLib_project(lenz_p->mPositions, &cStack_84);
|
|
local_90.x = 304.0f;
|
|
local_90.y = 224.0f;
|
|
local_90.z = 0.0f;
|
|
dKyr_get_vectle_calc(&local_90, &cStack_84, &local_78);
|
|
lenz_p->field_0x94 = cM_atan2s(local_78.x, local_78.y);
|
|
lenz_p->field_0x94 *= 0.0054931640625f; // Maybe 45 / 8192
|
|
lenz_p->field_0x94 += 180.0f;
|
|
dKyr_get_vectle_calc(&iVar6->lookat.eye, &iVar6->lookat.center, &cStack_6c);
|
|
|
|
for (int i = 2; i < 8; i++) {
|
|
if (i == 2) {
|
|
f32 fVar3 = local_60.abs(cStack_6c);
|
|
f32 fVar4 = 250.0f + 600.0f * fVar3;
|
|
lenz_p->mPositions[i].x = sun_p->mPos[0].x - local_60.x * fVar4 * i;
|
|
lenz_p->mPositions[i].y = sun_p->mPos[0].y - local_60.y * fVar4 * i;
|
|
lenz_p->mPositions[i].z = sun_p->mPos[0].z - local_60.z * fVar4 * i;
|
|
} else {
|
|
f32 fVar3 = local_60.abs(cStack_6c);
|
|
f32 fVar4 = 250.0f + 110.0f * fVar3;
|
|
lenz_p->mPositions[i].x =
|
|
sun_p->mPos[0].x - (4100.0f * local_60.x + local_60.x * fVar4 * i);
|
|
lenz_p->mPositions[i].y =
|
|
sun_p->mPos[0].y - (4100.0f * local_60.y + local_60.y * fVar4 * i);
|
|
lenz_p->mPositions[i].z =
|
|
sun_p->mPos[0].z - (4100.0f * local_60.z + local_60.z * fVar4 * i);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 8005BED8-8005BF08 056818 0030+00 1/1 0/0 0/0 .text dKyr_moon_arrival_check__Fv */
|
|
static int dKyr_moon_arrival_check() {
|
|
int rv = 0;
|
|
if (g_env_light.mDaytime > 285.0f || g_env_light.mDaytime < 67.5f) {
|
|
rv = 1;
|
|
}
|
|
|
|
return rv;
|
|
}
|
|
|
|
/* 8005BF08-8005CC5C 056848 0D54+00 0/0 1/1 0/0 .text dKyr_sun_move__Fv */
|
|
void dKyr_sun_move() {
|
|
dKankyo_sun_Packet* sun_p = g_env_light.mpSunPacket;
|
|
dKankyo_sunlenz_Packet* lenz_p = g_env_light.mpSunLenzPacket;
|
|
camera_class* camera_p2 = dComIfGp_getCamera(0);
|
|
camera_class* camera_p = dComIfGp_getCamera(0);
|
|
cXyz sp54;
|
|
|
|
f32 temp_f31;
|
|
f32 var_f30 = 0.0f;
|
|
static f32 S_parcent_bak = 0.0f;
|
|
|
|
u8 var_r22 = 0;
|
|
u8 var_r21 = 0;
|
|
s32 var_r20 = 0;
|
|
|
|
u32 st_type = dStage_stagInfo_GetSTType(dComIfGp_getStage()->getStagInfo());
|
|
|
|
if (g_env_light.mBaseLightInfluence.mColor.r == 0 && st_type != ST_ROOM) {
|
|
dKyr_get_vectle_calc(&camera_p2->lookat.eye, &g_env_light.mBaseLightInfluence.mPosition,
|
|
&sp54);
|
|
} else {
|
|
dKyr_get_vectle_calc(&camera_p2->lookat.eye, &g_env_light.mSunPos2, &sp54);
|
|
}
|
|
|
|
sun_p->mPos[0].x = camera_p2->lookat.eye.x + 8000.0f * sp54.x;
|
|
sun_p->mPos[0].y = camera_p2->lookat.eye.y + 8000.0f * sp54.y;
|
|
sun_p->mPos[0].z = camera_p2->lookat.eye.z + 8000.0f * sp54.z;
|
|
|
|
f32 var_f1 = (sun_p->mPos[0].y - camera_p2->lookat.eye.y) / 8000.0f;
|
|
if (var_f1 < 0.0f) {
|
|
var_f1 = 0.0f;
|
|
}
|
|
|
|
if (var_f1 >= 1.0f) {
|
|
var_f1 = 1.0f;
|
|
}
|
|
|
|
var_f1 = 1.0f - var_f1;
|
|
var_f1 *= var_f1;
|
|
temp_f31 = 1.0f - var_f1;
|
|
|
|
if (dComIfGp_getStage()->getStagInfo() != NULL) {
|
|
dStage_stagInfo_GetSTType(dComIfGp_getStage()->getStagInfo());
|
|
}
|
|
|
|
if (sun_p->field_0x28) {
|
|
sun_p->field_0x28--;
|
|
}
|
|
|
|
sun_p->field_0x29 = 0;
|
|
if (g_env_light.mDaytime > 77.5f && g_env_light.mDaytime < 285.0f && dKy_rain_check() < 20 &&
|
|
strcmp(dComIfGp_getStartStageName(), "F_SP200") != 0 &&
|
|
strcmp(dComIfGp_getStartStageName(), "D_MN09B") != 0)
|
|
{
|
|
f32 var_f28 = 0.0f;
|
|
cLib_addCalc(&sun_p->mSunAlpha, 1.0f, 1.0f / 20.0f, 1.0f / 10.0f, 0.00001f);
|
|
|
|
if (camera_p != NULL) {
|
|
var_f28 = camera_p->mCamera.TrimHeight();
|
|
}
|
|
|
|
cXyz sp48;
|
|
mDoLib_project(sun_p->mPos, &sp48);
|
|
|
|
for (int i = 0; i < 5; i++) {
|
|
cXyz sp3C = sp48;
|
|
static f32 const sun_chkpnt[5][2] = {
|
|
{0.0f, 0.0f}, {-10.0f, -20.0f}, {10.0f, 20.0f}, {-20.0f, 10.0f}, {20.0f, -10.0f},
|
|
};
|
|
sp3C.x -= sun_chkpnt[i][0];
|
|
sp3C.y -= sun_chkpnt[i][1];
|
|
if (sp3C.x > 0.0f && sp3C.x < 608.0f && sp3C.y > var_f28 && sp3C.y < 458.0f - var_f28) {
|
|
if (sun_p->field_0x44[i] >= 0xFFFFFF) {
|
|
var_r22++;
|
|
if (i == 0) {
|
|
var_r21++;
|
|
}
|
|
}
|
|
dComIfGd_peekZ(sp3C.x, sp3C.y, sun_p->field_0x44 + i);
|
|
} else {
|
|
sun_p->field_0x44[i] = 0;
|
|
var_r20++;
|
|
}
|
|
}
|
|
|
|
if (var_r20 != 0 && var_r22 != 0 && var_r21 != 0) {
|
|
var_r21 = 1;
|
|
var_r22 = 5;
|
|
}
|
|
|
|
if (var_r22 != 0) {
|
|
if (sun_p->field_0x28 < 5) {
|
|
sun_p->field_0x28 += 2;
|
|
}
|
|
sun_p->field_0x29 = 1;
|
|
}
|
|
|
|
lenz_p->field_0x84 = lenz_p->field_0x8c;
|
|
lenz_p->field_0x88 = lenz_p->field_0x90;
|
|
lenz_p->field_0x8c = 1000000000.0f;
|
|
lenz_p->field_0x90 = 0.0f;
|
|
|
|
cXyz sp30;
|
|
sp30.x = 304.0f;
|
|
sp30.y = 224.0f;
|
|
sp30.z = 0.0f;
|
|
|
|
lenz_p->mDistFalloff = sp30.abs(sp48);
|
|
lenz_p->mDistFalloff /= 450.0f;
|
|
if (lenz_p->mDistFalloff > 1.0f) {
|
|
lenz_p->mDistFalloff = 1.0f;
|
|
}
|
|
lenz_p->mDistFalloff = 1.0f - lenz_p->mDistFalloff;
|
|
var_f30 = lenz_p->mDistFalloff * lenz_p->mDistFalloff;
|
|
lenz_p->mDistFalloff = 1.0f - var_f30;
|
|
} else {
|
|
cLib_addCalc(&sun_p->mSunAlpha, 0.0f, 0.1f, 0.05f, 0.001f);
|
|
var_r22 = 0;
|
|
sun_p->field_0x28 = 0;
|
|
sun_p->field_0x29 = 0;
|
|
}
|
|
|
|
if (g_env_light.mColpatWeather != 0 || g_env_light.mSnowCount > 10) {
|
|
var_r21 = 0;
|
|
var_r22 = 0;
|
|
}
|
|
|
|
if (st_type == ST_ROOM) {
|
|
var_r21 = 0;
|
|
var_r22 = 0;
|
|
}
|
|
|
|
if (var_r21 != 0) {
|
|
if (var_r22 == 4) {
|
|
cLib_addCalc(&sun_p->mVisibility, 1.0f, 0.5f, 0.5f, 0.01f);
|
|
} else {
|
|
cLib_addCalc(&sun_p->mVisibility, 1.0f, 0.2f, 0.3f, 0.001f);
|
|
}
|
|
} else if (var_r22 < 1) {
|
|
cLib_addCalc(&sun_p->mVisibility, 0.0f, 0.5f, 0.5f, 0.001f);
|
|
} else {
|
|
cLib_addCalc(&sun_p->mVisibility, 0.0f, 0.2f, 0.3f, 0.001f);
|
|
}
|
|
|
|
if (sun_p->mVisibility <= 0.0f) {
|
|
g_env_light.mpSunLenzPacket->mDrawLenzInSky = 1;
|
|
} else {
|
|
g_env_light.mpSunLenzPacket->mDrawLenzInSky = 0;
|
|
}
|
|
|
|
if (sp54.y > 0.0f && g_env_light.mpSunLenzPacket->mDrawLenzInSky == 0) {
|
|
if (dStage_stagInfo_GetArg0(dComIfGp_getStage()->getStagInfo()) != 0) {
|
|
f32 var_f1_3;
|
|
if (S_parcent_bak < var_f30) {
|
|
var_f1_3 = var_f30 - S_parcent_bak;
|
|
} else {
|
|
var_f1_3 = S_parcent_bak - var_f30;
|
|
}
|
|
|
|
if (var_f1_3 < 0.3f) {
|
|
dKy_set_actcol_ratio(1.0f - var_f30 * sun_p->mVisibility);
|
|
dKy_set_bgcol_ratio(1.0f - var_f30 * sun_p->mVisibility);
|
|
dKy_set_fogcol_ratio(1.0f - temp_f31 * (var_f30 * sun_p->mVisibility));
|
|
dKy_set_vrboxcol_ratio(1.0f - 0.8f * (temp_f31 * (var_f30 * sun_p->mVisibility)));
|
|
}
|
|
S_parcent_bak = var_f30;
|
|
}
|
|
}
|
|
|
|
if (g_env_light.mDaytime < 255.0f && g_env_light.mColpatWeather == 0) {
|
|
cLib_addCalc(&sun_p->field_0x6c, 1.0f, 0.1f, 0.01f, 0.0001f);
|
|
} else {
|
|
cLib_addCalc(&sun_p->field_0x6c, 0.0f, 0.5f, 0.1f, 0.001f);
|
|
}
|
|
|
|
static GXColor sun_color[3] = {
|
|
{255, 255, 253, 255},
|
|
{255, 255, 255, 255},
|
|
{255, 255, 253, 255},
|
|
};
|
|
static GXColor sun_color2[3] = {
|
|
{255, 110, 43, 255},
|
|
{156, 121, 92, 255},
|
|
{255, 78, 0, 255},
|
|
};
|
|
|
|
if (g_env_light.mDaytime < 180.0f) {
|
|
f32 var_f1_4;
|
|
if (g_env_light.mDaytime < 90.0f) {
|
|
var_f1_4 = 0.0f;
|
|
} else if (g_env_light.mDaytime < 105.0f) {
|
|
var_f1_4 = dKy_get_parcent(105.0f, 90.0f, g_env_light.mDaytime);
|
|
} else {
|
|
var_f1_4 = 1.0f;
|
|
}
|
|
|
|
sun_p->mColor.r =
|
|
(f32)sun_color[0].r + var_f1_4 * ((f32)sun_color[1].r - (f32)sun_color[0].r);
|
|
sun_p->mColor.g =
|
|
(f32)sun_color[0].g + var_f1_4 * ((f32)sun_color[1].g - (f32)sun_color[0].g);
|
|
sun_p->mColor.b =
|
|
(f32)sun_color[0].b + var_f1_4 * ((f32)sun_color[1].b - (f32)sun_color[0].b);
|
|
|
|
sun_p->field_0x74.r =
|
|
(f32)sun_color2[0].r + var_f1_4 * ((f32)sun_color2[1].r - (f32)sun_color2[0].r);
|
|
sun_p->field_0x74.g =
|
|
(f32)sun_color2[0].g + var_f1_4 * ((f32)sun_color2[1].g - (f32)sun_color2[0].g);
|
|
sun_p->field_0x74.b =
|
|
(f32)sun_color2[0].b + var_f1_4 * ((f32)sun_color2[1].b - (f32)sun_color2[0].b);
|
|
} else {
|
|
f32 var_f1_5;
|
|
if (g_env_light.mDaytime < 247.5f) {
|
|
var_f1_5 = 1.0f;
|
|
} else if (g_env_light.mDaytime < 270.0f) {
|
|
var_f1_5 = 1.0f - dKy_get_parcent(270.0f, 247.5f, g_env_light.mDaytime);
|
|
} else {
|
|
var_f1_5 = 0.0f;
|
|
}
|
|
|
|
sun_p->mColor.r =
|
|
(f32)sun_color[2].r + var_f1_5 * ((f32)sun_color[1].r - (f32)sun_color[2].r);
|
|
sun_p->mColor.g =
|
|
(f32)sun_color[2].g + var_f1_5 * ((f32)sun_color[1].g - (f32)sun_color[2].g);
|
|
sun_p->mColor.b =
|
|
(f32)sun_color[2].b + var_f1_5 * ((f32)sun_color[1].b - (f32)sun_color[2].b);
|
|
|
|
sun_p->field_0x74.r =
|
|
(f32)sun_color2[2].r + var_f1_5 * ((f32)sun_color2[1].r - (f32)sun_color2[2].r);
|
|
sun_p->field_0x74.g =
|
|
(f32)sun_color2[2].g + var_f1_5 * ((f32)sun_color2[1].g - (f32)sun_color2[2].g);
|
|
sun_p->field_0x74.b =
|
|
(f32)sun_color2[2].b + var_f1_5 * ((f32)sun_color2[1].b - (f32)sun_color2[2].b);
|
|
}
|
|
|
|
if (dKyr_moon_arrival_check()) {
|
|
f32 var_f1_6 = (sun_p->mPos[0].y - camera_p2->lookat.eye.y) / -8000.0f;
|
|
var_f1_6 *= var_f1_6;
|
|
var_f1_6 *= 6.0f;
|
|
|
|
if (var_f1_6 > 1.0f) {
|
|
var_f1_6 = 1.0f;
|
|
}
|
|
|
|
cLib_addCalc(&sun_p->field_0x68, var_f1_6, 0.2f, 0.01f, 0.001f);
|
|
} else {
|
|
cLib_addCalc(&sun_p->field_0x68, 0.0f, 0.2f, 0.01f, 0.001f);
|
|
}
|
|
|
|
if (g_env_light.mCameraInWater == 0 && g_env_light.mDaytime > 255.0f &&
|
|
sun_p->mSunAlpha >= 0.2f)
|
|
{
|
|
cXyz sp24;
|
|
dKyr_get_vectle_calc(&camera_p2->lookat.eye, &g_env_light.mSunPos2, &sp54);
|
|
sp24.x = camera_p2->lookat.eye.x + 30160.0f * sp54.x;
|
|
sp24.y = camera_p2->lookat.eye.y + 30160.0f * sp54.y;
|
|
sp24.z = camera_p2->lookat.eye.z + 30160.0f * sp54.z;
|
|
sp24.y -= 21678.0f;
|
|
sun_p->field_0x58 = dComIfGp_particle_set(sun_p->field_0x58, 0x11C, &sp24, 0, 0);
|
|
}
|
|
}
|
|
|
|
/* 8005CC5C-8005CDA8 05759C 014C+00 0/0 1/1 0/0 .text dKyr_rain_init__Fv */
|
|
void dKyr_rain_init() {
|
|
camera_class* camera_p = g_dComIfG_gameInfo.play.mCameraInfo[0].mCamera;
|
|
g_env_light.mpRainPacket->mpTex = (u8*)dComIfG_getObjectRes("Always", 0x4a);
|
|
g_env_light.mpRainPacket->mpTex2 = (u8*)dComIfG_getObjectRes("Always", 0x57);
|
|
g_env_light.mpRainPacket->mCamEyePos = camera_p->lookat.eye;
|
|
g_env_light.mpRainPacket->mCamCenterPos = camera_p->lookat.center;
|
|
g_env_light.mpRainPacket->mCenterDeltaMul = 0.0f;
|
|
g_env_light.mpRainPacket->field_0x3700 = 0.0f;
|
|
g_env_light.mpRainPacket->mSibukiAlpha = 0.0f;
|
|
g_env_light.mpRainPacket->mOverheadFade = 0.0f;
|
|
g_env_light.mpRainPacket->mFwdFade1 = 0.0f;
|
|
g_env_light.mpRainPacket->mFwdFade2 = 0.0f;
|
|
g_env_light.mpRainPacket->mStatus = 0.0f;
|
|
g_env_light.mpRainPacket->mCenterDelta.x = 0.0f;
|
|
g_env_light.mpRainPacket->mCenterDelta.y = 0.0f;
|
|
g_env_light.mpRainPacket->mCenterDelta.z = 0.0f;
|
|
|
|
for (int i = 0; i < 250; i++) {
|
|
g_env_light.mpRainPacket->mRainEff[i].mStatus = 0;
|
|
}
|
|
g_env_light.mpRainPacket->mRainCount = 0;
|
|
}
|
|
|
|
/* 8005CDA8-8005CDD0 0576E8 0028+00 1/1 0/0 0/0 .text rain_bg_chk__FP19dKankyo_rain_Packeti */
|
|
static void rain_bg_chk(dKankyo_rain_Packet* i_packet, int i_idx) {
|
|
i_packet->mRainEff[i_idx].field_0x30 = dComIfGp_getCamera(0)->lookat.center.y + -800.0f;
|
|
}
|
|
|
|
/* 8005CDD0-8005CF78 057710 01A8+00 1/1 0/0 0/0 .text overhead_bg_chk__Fv */
|
|
static BOOL overhead_bg_chk() {
|
|
camera_class* camera = dComIfGp_getCamera(0);
|
|
BOOL chk = false;
|
|
|
|
dBgS_ObjGndChk_All gndchk;
|
|
dBgS_RoofChk roofchk;
|
|
|
|
cXyz chkPos = camera->lookat.eye;
|
|
chkPos.y += 50.0f;
|
|
|
|
roofchk.i_SetPos(chkPos);
|
|
if (dComIfG_Bgsp().RoofChk(&roofchk) != 1.0e9f) {
|
|
chk = true;
|
|
// Outside East Castle Town
|
|
if (!strcmp(dComIfGp_getStartStageName(), "F_SP122") &&
|
|
dStage_roomControl_c::getStayNo() == 17)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
chkPos.y += 10000.0f;
|
|
gndchk.SetPos(&chkPos);
|
|
if (dComIfG_Bgsp().GroundCross(&gndchk) > camera->lookat.eye.y + 50.0f) {
|
|
chk = true;
|
|
}
|
|
|
|
return chk;
|
|
}
|
|
|
|
/* 8005CF78-8005D18C 0578B8 0214+00 1/1 0/0 0/0 .text forward_overhead_bg_chk__FP4cXyzf
|
|
*/
|
|
static int forward_overhead_bg_chk(cXyz* param_0, f32 param_1) {
|
|
camera_class* camera_p = dComIfGp_getCamera(0);
|
|
u32 chk = 0;
|
|
|
|
dBgS_ObjGndChk_All gncChk;
|
|
dBgS_RoofChk roofChk;
|
|
|
|
cXyz chk_pos;
|
|
cXyz vectle;
|
|
dKyr_get_vectle_calc(&camera_p->lookat.eye, &camera_p->lookat.center, &vectle);
|
|
chk_pos.x = camera_p->lookat.eye.x + vectle.x * param_1;
|
|
chk_pos.y = camera_p->lookat.eye.y + vectle.y * param_1;
|
|
chk_pos.z = camera_p->lookat.eye.z + vectle.z * param_1;
|
|
chk_pos.y = 50.0f + camera_p->lookat.eye.y;
|
|
*param_0 = chk_pos;
|
|
|
|
roofChk.i_SetPos(chk_pos);
|
|
if (1000000000.0f != dComIfG_Bgsp().RoofChk(&roofChk)) {
|
|
chk = 1;
|
|
if (strcmp(dComIfGp_getStartStageName(), "F_SP122") == 0) {
|
|
if (dStage_roomControl_c::getStayNo() == 17) {
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
chk_pos.y += 10000.0f;
|
|
gncChk.SetPos(&chk_pos);
|
|
|
|
if (dComIfG_Bgsp().GroundCross(&gncChk) > 50.0f + camera_p->lookat.eye.y) {
|
|
chk = 1;
|
|
}
|
|
return chk;
|
|
}
|
|
|
|
/* 8005D18C-8005E8B0 057ACC 1724+00 0/0 1/1 0/0 .text dKyr_rain_move__Fv */
|
|
// NONMATCHING reg alloc, equivalent?
|
|
void dKyr_rain_move() {
|
|
camera_class* camera_p;
|
|
|
|
dKankyo_rain_Packet* rain_p = g_env_light.mpRainPacket;
|
|
camera_p = (camera_class*)dComIfGp_getCamera(0);
|
|
fopAc_ac_c* player_p = dComIfGp_getPlayer(0);
|
|
|
|
cXyz spE0;
|
|
cXyz spD4;
|
|
cXyz spC8 = dKyw_get_wind_vecpow();
|
|
cXyz spBC;
|
|
cXyz spB0;
|
|
|
|
BOOL var_r20;
|
|
BOOL var_r21;
|
|
BOOL var_r22;
|
|
BOOL var_r23;
|
|
BOOL var_r24;
|
|
|
|
var_r21 = 0;
|
|
var_r20 = 0;
|
|
|
|
dStage_stagInfo_GetSTType(dComIfGp_getStage()->getStagInfo());
|
|
|
|
cXyz spA4;
|
|
cXyz sp98;
|
|
cXyz sp8C;
|
|
|
|
spA4.x = 0.0f;
|
|
spA4.y = -2.5f;
|
|
spA4.z = 0.0f;
|
|
|
|
if (rain_p->mRainCount <= g_env_light.mRainCount) {
|
|
rain_p->mRainCount = g_env_light.mRainCount;
|
|
}
|
|
|
|
if (rain_p->mRainCount != 0) {
|
|
dKyr_get_vectle_calc(&camera_p->lookat.center, &rain_p->mCamCenterPos, &spB0);
|
|
|
|
f32 var_f1 = rain_p->mCamEyePos.abs(camera_p->lookat.eye);
|
|
|
|
f32 var_f30;
|
|
if (var_f1 > 10.0f) {
|
|
var_f30 = (var_f1 - 10.0f) / 50.0f;
|
|
if (var_f30 > 1.0f) {
|
|
var_f30 = 1.0f;
|
|
}
|
|
} else {
|
|
var_f30 = 0.0f;
|
|
}
|
|
|
|
rain_p->mCamEyePos.x = camera_p->lookat.eye.x;
|
|
rain_p->mCamEyePos.z = camera_p->lookat.eye.z;
|
|
|
|
f32 var_f1_2 = rain_p->mCamEyePos.abs(camera_p->lookat.eye);
|
|
f32 var_f2 = var_f1_2 / 20.0f;
|
|
if (var_f2 > 1.0f) {
|
|
var_f2 = 1.0f;
|
|
}
|
|
|
|
spA4.y -= var_f2 * 15.0f;
|
|
rain_p->mCamEyePos = camera_p->lookat.eye;
|
|
|
|
f32 var_f1_3 = rain_p->mCamCenterPos.abs(camera_p->lookat.center);
|
|
|
|
f32 var_f1_4;
|
|
if (var_f1_3 > 10.0f) {
|
|
var_f1_4 = (var_f1_3 - 10.0f) / 50.0f;
|
|
if (var_f1_4 > 1.0f) {
|
|
var_f1_4 = 1.0f;
|
|
}
|
|
} else {
|
|
var_f1_4 = 0.0f;
|
|
}
|
|
|
|
cLib_addCalc(&rain_p->mCenterDeltaMul, var_f30 * var_f1_4, 0.2f, 0.1f, 0.01f);
|
|
if (rain_p->mCenterDeltaMul > 0.3f) {
|
|
rain_p->mCenterDeltaMul = 0.3f;
|
|
}
|
|
|
|
cLib_addCalc(&rain_p->mCenterDelta.x, spB0.x, 0.2f, 0.1f, 0.01f);
|
|
cLib_addCalc(&rain_p->mCenterDelta.y, spB0.y, 0.2f, 0.1f, 0.01f);
|
|
cLib_addCalc(&rain_p->mCenterDelta.z, spB0.z, 0.2f, 0.1f, 0.01f);
|
|
rain_p->mCamCenterPos = camera_p->lookat.center;
|
|
|
|
dKy_set_eyevect_calc2(camera_p, &spE0, 700.0f, 600.0f);
|
|
spD4.z = 0.0f;
|
|
spD4.y = 0.0f;
|
|
spD4.x = 0.0f;
|
|
|
|
dKyw_get_wind_vec();
|
|
dKyw_get_wind_pow();
|
|
|
|
rain_p->field_0x36cc = 0;
|
|
rain_p->field_0x36c8 = 0;
|
|
rain_p->mStatus = 0;
|
|
|
|
var_r22 = 0;
|
|
var_r23 = 0;
|
|
var_r24 = 0;
|
|
f32 var_f29;
|
|
|
|
if (strcmp(dComIfGp_getStartStageName(), "R_SP30") == 0) {
|
|
if (dComIfGp_roomControl_getStayNo() == 0 || dComIfGp_roomControl_getStayNo() == 4) {
|
|
var_r20 = 1;
|
|
}
|
|
} else if (strcmp(dComIfGp_getStartStageName(), "R_SP107") == 0 &&
|
|
dComIfGp_roomControl_getStayNo() == 1)
|
|
{
|
|
var_r20 = 2;
|
|
} else if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
|
|
var_r20 = 3;
|
|
}
|
|
|
|
if (var_r20 == 0) {
|
|
var_r24 = overhead_bg_chk();
|
|
var_r23 = forward_overhead_bg_chk(&sp98, 700.0f);
|
|
var_r22 = forward_overhead_bg_chk(&sp8C, 1400.0f);
|
|
|
|
if (var_r24) {
|
|
rain_p->mStatus |= 1;
|
|
} else if (var_r23) {
|
|
rain_p->mStatus |= 2;
|
|
}
|
|
} else {
|
|
var_r21 = 1;
|
|
rain_p->mStatus |= 1;
|
|
var_f29 = 1200.0f;
|
|
}
|
|
|
|
if (var_r24) {
|
|
cLib_addCalc(&rain_p->mOverheadFade, 0.0f, 0.5f, 0.2f, 0.01f);
|
|
} else {
|
|
cLib_addCalc(&rain_p->mOverheadFade, 1.0f, 0.1f, 0.1f, 0.001f);
|
|
}
|
|
|
|
if (var_r23) {
|
|
cLib_addCalc(&rain_p->mFwdFade1, 0.0f, 0.5f, 0.2f, 0.01f);
|
|
} else {
|
|
cLib_addCalc(&rain_p->mFwdFade1, 1.0f, 0.1f, 0.1f, 0.001f);
|
|
}
|
|
|
|
if (var_r22) {
|
|
cLib_addCalc(&rain_p->mFwdFade2, 0.0f, 0.5f, 0.2f, 0.01f);
|
|
} else {
|
|
cLib_addCalc(&rain_p->mFwdFade2, 1.0f, 0.1f, 0.1f, 0.001f);
|
|
}
|
|
|
|
f32 temp_f30 = 1.0f;
|
|
for (int i = rain_p->mRainCount - 1; i >= 0; i--) {
|
|
rain_p->mRainEff[i].mBasePos.y = spE0.y;
|
|
RAIN_EFF* effect_p = &rain_p->mRainEff[i];
|
|
|
|
switch (rain_p->mRainEff[i].mStatus) {
|
|
case 0:
|
|
effect_p->field_0x24 = -(cM_rndF(10.0f) + 35.5f);
|
|
effect_p->mTimer = 0;
|
|
effect_p->mBasePos = spE0;
|
|
effect_p->mPosition.x = cM_rndFX(800.0f);
|
|
effect_p->mPosition.y = cM_rndF(600.0f);
|
|
effect_p->mPosition.z = cM_rndFX(800.0f);
|
|
effect_p->mAlpha = 1.0f;
|
|
effect_p->field_0x1c = cM_rndF(360.0f);
|
|
effect_p->field_0x20 = cM_rndF(360.0f);
|
|
|
|
rain_bg_chk(rain_p, i);
|
|
effect_p->mStatus++;
|
|
break;
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
f32 target = cM_rndFX(0.1f);
|
|
f32* temp_r27 = &effect_p->field_0x24;
|
|
target = effect_p->field_0x24 - target;
|
|
|
|
cLib_addCalc(temp_r27, target, 0.5f, 0.1f, 0.01f);
|
|
|
|
effect_p->mPosition.x +=
|
|
20.0f *
|
|
((spC8.x + (10.0f * (rain_p->mCenterDelta.x * rain_p->mCenterDeltaMul))) +
|
|
(spA4.x + (0.08f * (f32)(i & 7))));
|
|
|
|
effect_p->mPosition.y +=
|
|
((f32)(i & 7) * -2.0f) +
|
|
(20.0f *
|
|
(spA4.y +
|
|
(spC8.y + ((rain_p->mCenterDelta.y * rain_p->mCenterDeltaMul) * 10.0f))));
|
|
|
|
effect_p->mPosition.z +=
|
|
20.0f *
|
|
((spC8.z + (10.0f * (rain_p->mCenterDelta.z * rain_p->mCenterDeltaMul))) +
|
|
(spA4.z + (0.08f * (f32)(i & 3))));
|
|
|
|
spBC.x = effect_p->mBasePos.x + effect_p->mPosition.x;
|
|
spBC.y = spE0.y;
|
|
spBC.z = effect_p->mBasePos.z + effect_p->mPosition.z;
|
|
|
|
f32 var_f1_5 = spBC.abs(spE0);
|
|
|
|
if (effect_p->mTimer == 0) {
|
|
if (var_f1_5 > 800.0f) {
|
|
effect_p->mTimer = 10;
|
|
*temp_r27 = -(cM_rndF(10.0f) + 35.5f);
|
|
effect_p->mBasePos = spE0;
|
|
|
|
f32 var_f1_6 = spBC.abs(spE0);
|
|
if (var_f1_6 > 850.0f) {
|
|
effect_p->mPosition.x = cM_rndFX(800.0f);
|
|
effect_p->mPosition.y = cM_rndFX(800.0f);
|
|
effect_p->mPosition.z = cM_rndFX(800.0f);
|
|
} else {
|
|
f32 temp_f31 = cM_rndFX(40.0f);
|
|
get_vectle_calc(&spBC, &spE0, &spB0);
|
|
|
|
effect_p->mPosition.x = spB0.x * (temp_f31 + 800.0f);
|
|
effect_p->mPosition.y = spB0.y * (temp_f31 + 800.0f);
|
|
effect_p->mPosition.z = spB0.z * (temp_f31 + 800.0f);
|
|
}
|
|
|
|
effect_p->mStatus = 1;
|
|
rain_bg_chk(rain_p, i);
|
|
}
|
|
|
|
spBC.y = effect_p->mBasePos.y + effect_p->mPosition.y;
|
|
if (spBC.y < effect_p->field_0x30 + 20.0f) {
|
|
effect_p->mBasePos = spE0;
|
|
effect_p->mPosition.x = cM_rndFX(800.0f);
|
|
effect_p->mPosition.y = 200.0f;
|
|
effect_p->mPosition.z = cM_rndFX(800.0f);
|
|
rain_bg_chk(rain_p, i);
|
|
effect_p->mTimer = 10;
|
|
}
|
|
} else {
|
|
effect_p->mTimer--;
|
|
}
|
|
break;
|
|
}
|
|
|
|
spBC.x = effect_p->mBasePos.x + effect_p->mPosition.x;
|
|
spBC.y = effect_p->mBasePos.y + effect_p->mPosition.y;
|
|
spBC.z = effect_p->mBasePos.z + effect_p->mPosition.z;
|
|
|
|
if (i > g_env_light.mRainCount - 1) {
|
|
if (i == rain_p->mRainCount - 1) {
|
|
rain_p->mRainCount--;
|
|
}
|
|
}
|
|
|
|
f32 var_f31 = 1.0f;
|
|
if (var_r24 || rain_p->mOverheadFade < 1.0f) {
|
|
cXyz sp80;
|
|
sp80 = spBC;
|
|
sp80.y = camera_p->lookat.eye.y;
|
|
|
|
if (camera_p->lookat.eye.abs(sp80) < 800.0f) {
|
|
var_f31 *= rain_p->mOverheadFade * 1.0f;
|
|
}
|
|
}
|
|
|
|
if (var_r23 || rain_p->mFwdFade1 < 1.0f) {
|
|
cXyz sp74;
|
|
sp74 = spBC;
|
|
sp74.y = sp98.y;
|
|
|
|
if (sp98.abs(sp74) < 550.0f) {
|
|
var_f31 *= rain_p->mFwdFade1;
|
|
}
|
|
}
|
|
|
|
if (var_r22 || rain_p->mFwdFade2 < 1.0f) {
|
|
cXyz sp68;
|
|
sp68 = spBC;
|
|
sp68.y = sp8C.y;
|
|
|
|
if (sp8C.abs(sp68) < 550.0f) {
|
|
var_f31 *= rain_p->mFwdFade2;
|
|
}
|
|
}
|
|
|
|
if (var_r21) {
|
|
cXyz sp5C;
|
|
if (strcmp(dComIfGp_getStartStageName(), "R_SP30") == 0) {
|
|
if (dComIfGp_roomControl_getStayNo() == 0) {
|
|
if (spBC.x > -2680.0f && spBC.z < 2200.0f) {
|
|
var_f31 = 0.0f;
|
|
}
|
|
} else if (dComIfGp_roomControl_getStayNo() == 4 && spBC.z > 1600.0f) {
|
|
var_f31 = 0.0f;
|
|
}
|
|
} else if (var_r20 == 2) {
|
|
cXyz sp50;
|
|
sp50.x = 27453.0f;
|
|
sp50.y = spBC.y;
|
|
sp50.z = 8528.0f;
|
|
|
|
if (spBC.y < 1300.0f || player_p->current.pos.y < 1100.0f) {
|
|
if (spBC.abs(sp50) > 80.0f) {
|
|
var_f31 = 0.0f;
|
|
}
|
|
} else {
|
|
if (spBC.abs(sp50) > 500.0f) {
|
|
var_f31 = 0.0f;
|
|
}
|
|
}
|
|
} else if (var_r20 == 3) {
|
|
cXyz sp44;
|
|
sp44.x = -228.0f;
|
|
sp44.y = spBC.y;
|
|
sp44.z = 795.0f;
|
|
|
|
if (spBC.abs(sp44) < 1500.0f) {
|
|
var_f31 = 0.0f;
|
|
}
|
|
|
|
if (camera_p->lookat.eye.y < 0.0f) {
|
|
var_f31 = 0.0f;
|
|
}
|
|
} else {
|
|
sp5C = spBC;
|
|
sp5C.y = 0.0f;
|
|
|
|
if (sp5C.abs() < var_f29) {
|
|
var_f31 = 0.0f;
|
|
}
|
|
}
|
|
} else if (strcmp(dComIfGp_getStartStageName(), "F_SP113") == 0 &&
|
|
dComIfGp_roomControl_getStayNo() == 1)
|
|
{
|
|
if (spBC.z < 5100.0f || (spBC.x < -3250.0f && spBC.y < -50.0f) ||
|
|
(spBC.x < -2700.0f && spBC.z > 15750.0f))
|
|
{
|
|
var_f31 = 0.0f;
|
|
rain_p->mStatus |= 1;
|
|
}
|
|
} else if (strcmp(dComIfGp_getStartStageName(), "D_MN09") == 0 &&
|
|
dComIfGp_roomControl_getStayNo() == 9)
|
|
{
|
|
if (spBC.x < -3680.0f && spBC.z > -11975.0f && spBC.z < -10530.0f) {
|
|
var_f31 = 0.0f;
|
|
rain_p->mStatus |= 1;
|
|
} else if (spBC.x > 3350.0f && spBC.z > -13027.0f && spBC.z < -11430.0f) {
|
|
var_f31 = 0.0f;
|
|
rain_p->mStatus |= 1;
|
|
}
|
|
} else if (strcmp(dComIfGp_getStartStageName(), "R_SP107") == 0 &&
|
|
dComIfGp_roomControl_getStayNo() == 2 && spBC.z > 36900.0f)
|
|
{
|
|
var_f31 = 0.0f;
|
|
rain_p->mStatus |= 1;
|
|
}
|
|
|
|
effect_p->mAlpha = var_f31 * (temp_f30 + cM_rndFX(0.5f));
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 8005E8B0-8005E8F8 0591F0 0048+00 1/1 0/0 0/0 .text d_krain_cut_turn_check__Fv */
|
|
static BOOL d_krain_cut_turn_check() {
|
|
daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
|
|
BOOL ret = FALSE;
|
|
|
|
if (player != NULL && (player->getCutType() == daPy_py_c::CUT_TYPE_TURN_RIGHT ||
|
|
player->getCutType() == daPy_py_c::CUT_TYPE_TURN_LEFT ||
|
|
player->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT ||
|
|
player->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT)) {
|
|
ret = TRUE;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
/* 8005E8F8-8005FBDC 059238 12E4+00 0/0 1/1 0/0 .text dKyr_housi_move__Fv */
|
|
void dKyr_housi_move() {
|
|
dKankyo_housi_Packet* housi_p = g_env_light.mpHousiPacket;
|
|
HOUSI_EFF* effect_p;
|
|
camera_class* camera_p = (camera_class*)dComIfGp_getCamera(0);
|
|
fopAc_ac_c* player_p = dComIfGp_getPlayer(0);
|
|
|
|
cXyz sp84;
|
|
cXyz sp78 = dKyw_get_wind_vecpow();
|
|
cXyz sp6C;
|
|
cXyz sp60;
|
|
|
|
dBgS_GndChk sp138;
|
|
bool var_r27 = 0;
|
|
f32 var_f31 = 1.0f;
|
|
|
|
dBgS_CamGndChk_Wtr spE4;
|
|
f32 var_f30 = -100000000.0f;
|
|
bool var_r24 = 0;
|
|
|
|
cXyz sp54;
|
|
|
|
if (strcmp(dComIfGp_getStartStageName(), "D_MN08") == 0) {
|
|
var_r24 = 1;
|
|
}
|
|
|
|
if (g_env_light.field_0xea9 == 2) {
|
|
sp54 = camera_p->lookat.eye;
|
|
sp54.y += 100000.0f;
|
|
|
|
spE4.SetPos(&sp54);
|
|
var_f30 = dComIfG_Bgsp().GroundCross(&spE4);
|
|
}
|
|
|
|
if (dKy_darkworld_check() == true || var_r24 == 1) {
|
|
sp78.x = 0.0f;
|
|
sp78.y = 2.8f;
|
|
sp78.z = 0.0f;
|
|
}
|
|
|
|
if (g_env_light.field_0xea9 == 1) {
|
|
sp78.x = 0.0f;
|
|
sp78.y = -0.55f;
|
|
sp78.z = 0.0f;
|
|
}
|
|
|
|
if (g_env_light.mHousiCount != 0 ||
|
|
(g_env_light.mHousiCount == 0 && housi_p->field_0x5de8 <= 0.0f))
|
|
{
|
|
housi_p->field_0x5dec = g_env_light.mHousiCount;
|
|
}
|
|
|
|
if (g_env_light.mHousiCount != 0) {
|
|
cLib_addCalc(&housi_p->field_0x5de8, 1.0f, 0.2f, 0.05f, 0.01f);
|
|
} else {
|
|
cLib_addCalc(&housi_p->field_0x5de8, 0.0f, 0.2f, 0.05f, 0.01f);
|
|
}
|
|
|
|
if (housi_p->field_0x5dec == 0) {
|
|
return;
|
|
}
|
|
|
|
dKy_set_eyevect_calc2(camera_p, &sp84, 800.0f, 800.0f);
|
|
|
|
if (sp84.abs(housi_p->field_0x10) > 500.0f) {
|
|
var_r27 = 1;
|
|
}
|
|
|
|
housi_p->field_0x10 = sp84;
|
|
dKyw_get_wind_pow();
|
|
|
|
if (g_env_light.field_0xea9 == 1) {
|
|
var_f31 = 0.0f;
|
|
|
|
if (g_env_light.mCameraInWater) {
|
|
dBgS_CamGndChk_Wtr sp90;
|
|
|
|
cXyz sp48;
|
|
camera_class* cam_p = dComIfGp_getCamera(0);
|
|
sp48 = cam_p->lookat.eye;
|
|
sp48.y += 100000.0f;
|
|
|
|
sp90.SetPos(&sp48);
|
|
f32 gnd_cross = dComIfG_Bgsp().GroundCross(&sp90);
|
|
if (gnd_cross > cam_p->lookat.eye.y) {
|
|
var_f31 = (gnd_cross - cam_p->lookat.eye.y) / 700.0f;
|
|
if (var_f31 < 0.0f) {
|
|
var_f31 = 0.0f;
|
|
}
|
|
|
|
if (var_f31 > 1.0f) {
|
|
var_f31 = 1.0f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
for (int i = housi_p->field_0x5dec - 1; i >= 0; i--) {
|
|
f32 var_f26 = 0.4f * housi_p->field_0x5de8;
|
|
effect_p = &housi_p->mHousiEff[i];
|
|
|
|
switch (housi_p->mHousiEff[i].mStatus) {
|
|
case 0:
|
|
if (g_env_light.field_0xea9 == 1) {
|
|
effect_p->field_0x34 = cM_rndF(0.5f) + 0.1f;
|
|
} else {
|
|
effect_p->field_0x34 = cM_rndF(1.5f) + 0.2f;
|
|
}
|
|
|
|
effect_p->field_0x3c = 0;
|
|
effect_p->field_0x4c = cM_rndFX(65536.0f);
|
|
effect_p->mBasePos.x = sp84.x;
|
|
effect_p->mBasePos.y = sp84.y;
|
|
effect_p->mBasePos.z = sp84.z;
|
|
effect_p->mPosition.x = cM_rndFX(1000.0f);
|
|
effect_p->mPosition.y = cM_rndFX(1000.0f);
|
|
effect_p->mPosition.z = cM_rndFX(1000.0f);
|
|
effect_p->mAlpha = 0.0f;
|
|
effect_p->field_0x48 = 0.0f;
|
|
effect_p->mScale.x = cM_rndF(360.0f);
|
|
effect_p->mScale.y = cM_rndF(360.0f);
|
|
effect_p->mScale.z = cM_rndF(360.0f);
|
|
effect_p->mSpeed.x = 0.0f;
|
|
effect_p->mSpeed.y = 0.0f;
|
|
effect_p->mSpeed.z = 0.0f;
|
|
|
|
if (effect_p->mBasePos.y + effect_p->mPosition.y < -100149.9f) {
|
|
effect_p->mPosition.y = (-99999.9f - effect_p->mBasePos.y) + 10.0f;
|
|
}
|
|
|
|
effect_p->field_0x38 = 0.0f;
|
|
effect_p->field_0x44 = 0.0f;
|
|
effect_p->mStatus++;
|
|
break;
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
f32 var_f24 = 2.5f;
|
|
|
|
if (effect_p->mStatus != 4) {
|
|
f32 var_f23 = effect_p->field_0x34;
|
|
if (effect_p->mStatus == 2) {
|
|
var_f23 *= 0.25f;
|
|
}
|
|
|
|
f32 temp_f0_5 = cM_fsin(effect_p->mScale.x);
|
|
if (g_env_light.field_0xea9 == 2) {
|
|
var_f24 = 5.0f;
|
|
}
|
|
|
|
if (effect_p->mStatus != 3) {
|
|
effect_p->mPosition.y += var_f23 * (sp78.y * var_f24);
|
|
effect_p->mPosition.x += var_f23 * (sp78.x * var_f24);
|
|
effect_p->mPosition.y -= var_f23 * 0.6f;
|
|
|
|
if (g_env_light.field_0xea9 == 2) {
|
|
if (g_env_light.mPondSeason == 3) {
|
|
effect_p->mPosition.y -= var_f23 * 3.0f;
|
|
} else {
|
|
effect_p->mPosition.y -= var_f23 * 1.5f;
|
|
}
|
|
}
|
|
|
|
effect_p->mPosition.z += var_f23 * (sp78.z * var_f24);
|
|
} else {
|
|
var_f23 *= 4.5f;
|
|
|
|
effect_p->mPosition.x += var_f23 * (sp78.x * var_f24);
|
|
effect_p->mPosition.y += (var_f23 * (sp78.y * var_f24)) * 0.75f;
|
|
effect_p->mPosition.y += var_f23 * 0.3f;
|
|
effect_p->mPosition.z += var_f23 * (sp78.z * var_f24);
|
|
}
|
|
|
|
effect_p->mPosition.x += temp_f0_5 * var_f23;
|
|
effect_p->mPosition.y += var_f23 * 0.5f * cM_fsin(effect_p->mScale.y);
|
|
effect_p->mPosition.z += cM_fsin(effect_p->mScale.z) * var_f23;
|
|
} else if (d_krain_cut_turn_check()) {
|
|
effect_p->mStatus = 3;
|
|
}
|
|
|
|
effect_p->mScale.x += 0.03f;
|
|
effect_p->mScale.y += 0.02f;
|
|
effect_p->mScale.z += 0.01f;
|
|
|
|
sp6C.x = effect_p->mBasePos.x + effect_p->mPosition.x;
|
|
sp6C.y = effect_p->mBasePos.y + effect_p->mPosition.y;
|
|
sp6C.z = effect_p->mBasePos.z + effect_p->mPosition.z;
|
|
|
|
if (g_env_light.field_0xea9 == 2) {
|
|
cXyz sp3C(sp6C);
|
|
|
|
if (sp6C.y <= var_f30) {
|
|
effect_p->mStatus = 2;
|
|
}
|
|
|
|
if (effect_p->mStatus == 2) {
|
|
effect_p->mPosition.y = var_f30 - effect_p->mBasePos.y;
|
|
} else if (effect_p->mStatus != 3 && effect_p->mStatus != 4) {
|
|
sp3C.y = player_p->current.pos.y;
|
|
|
|
if (sp3C.abs(player_p->current.pos) < 300.0f) {
|
|
if (sp3C.z > 5600.0f && player_p->current.pos.y < 130.0f) {
|
|
if (sp6C.y < player_p->current.pos.y + 2.0f) {
|
|
effect_p->mPosition.y =
|
|
(player_p->current.pos.y + 2.0f) - effect_p->mBasePos.y;
|
|
effect_p->mStatus = 4;
|
|
}
|
|
} else {
|
|
effect_p->mStatus = 3;
|
|
}
|
|
}
|
|
} else {
|
|
if (effect_p->mStatus == 4) {
|
|
effect_p->mPosition.y =
|
|
(player_p->current.pos.y + 2.0f) - effect_p->mBasePos.y;
|
|
}
|
|
|
|
if (sp3C.abs(player_p->current.pos) > 400.0f) {
|
|
effect_p->mStatus = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
sp60 = dKyw_pntwind_get_vecpow(&sp6C);
|
|
|
|
if (effect_p->mSpeed.x < 30.0f) {
|
|
effect_p->mSpeed.x += sp60.x * 9.0f;
|
|
}
|
|
|
|
if (effect_p->mSpeed.y < 30.0f) {
|
|
effect_p->mSpeed.y += sp60.y * 9.0f;
|
|
}
|
|
|
|
if (effect_p->mSpeed.z < 30.0f) {
|
|
effect_p->mSpeed.z += sp60.z * 9.0f;
|
|
}
|
|
|
|
cLib_addCalc(&effect_p->mSpeed.x, 0.0f, 0.2f, 0.1f, 0.00001f);
|
|
cLib_addCalc(&effect_p->mSpeed.y, 0.0f, 0.2f, 0.1f, 0.00001f);
|
|
cLib_addCalc(&effect_p->mSpeed.z, 0.0f, 0.2f, 0.1f, 0.00001f);
|
|
|
|
effect_p->mPosition.x += effect_p->mSpeed.x;
|
|
effect_p->mPosition.y += effect_p->mSpeed.y;
|
|
effect_p->mPosition.z += effect_p->mSpeed.z;
|
|
|
|
sp6C.x = effect_p->mBasePos.x + effect_p->mPosition.x;
|
|
sp6C.y = effect_p->mBasePos.y + effect_p->mPosition.y;
|
|
sp6C.z = effect_p->mBasePos.z + effect_p->mPosition.z;
|
|
|
|
f32 var_f1_4 = sp6C.abs(sp84);
|
|
|
|
if (effect_p->field_0x3c == 0) {
|
|
if (var_f1_4 > 1000.0f || sp6C.y < -99979.9f) {
|
|
effect_p->field_0x3c = 10;
|
|
effect_p->mBasePos = sp84;
|
|
|
|
if (sp6C.abs(sp84) > 1050.0f) {
|
|
effect_p->mPosition.x = cM_rndFX(1000.0f);
|
|
effect_p->mPosition.y = cM_rndFX(1000.0f);
|
|
effect_p->mPosition.z = cM_rndFX(1000.0f);
|
|
} else {
|
|
f32 temp_f23 = cM_rndFX(50.0f);
|
|
get_vectle_calc(&sp6C, &sp84, &sp60);
|
|
|
|
effect_p->mPosition.x = sp60.x * (temp_f23 + 1000.0f);
|
|
effect_p->mPosition.y = sp60.y * (temp_f23 + 1000.0f);
|
|
effect_p->mPosition.z = sp60.z * (temp_f23 + 1000.0f);
|
|
}
|
|
|
|
sp6C.x = effect_p->mBasePos.x + effect_p->mPosition.x;
|
|
sp6C.y = effect_p->mBasePos.y + effect_p->mPosition.y;
|
|
sp6C.z = effect_p->mBasePos.z + effect_p->mPosition.z;
|
|
|
|
if (sp6C.y <= var_f30) {
|
|
effect_p->mPosition.y += 1000.0f;
|
|
}
|
|
|
|
effect_p->mSpeed.x = 0.0f;
|
|
effect_p->mSpeed.y = 0.0f;
|
|
effect_p->mSpeed.z = 0.0f;
|
|
|
|
if (g_env_light.field_0xea9 == 2) {
|
|
effect_p->mPosition.y += cM_rndF(3200.0f);
|
|
if (sp6C.y > 3200.0f) {
|
|
effect_p->mPosition.y = 3200.0f - effect_p->mBasePos.y;
|
|
}
|
|
|
|
if (g_env_light.mPondSeason == 1) {
|
|
if (sp6C.x > 600.0f || sp6C.z > 1600.0f) {
|
|
effect_p->mStatus = 1;
|
|
} else {
|
|
effect_p->mStatus = 2;
|
|
}
|
|
} else if (sp6C.x > 1700.0f || sp6C.z > 2800.0f) {
|
|
effect_p->mStatus = 1;
|
|
} else {
|
|
effect_p->mStatus = 2;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
effect_p->field_0x3c--;
|
|
}
|
|
break;
|
|
}
|
|
|
|
sp6C.x = effect_p->mBasePos.x + effect_p->mPosition.x;
|
|
sp6C.y = effect_p->mBasePos.y + effect_p->mPosition.y;
|
|
sp6C.z = effect_p->mBasePos.z + effect_p->mPosition.z;
|
|
|
|
if (g_env_light.field_0xea9 != 2) {
|
|
effect_p->field_0x4c += 600;
|
|
if (effect_p->field_0x4c > 30000) {
|
|
var_f26 = 0.0f;
|
|
}
|
|
} else {
|
|
var_f26 = 1.0f;
|
|
}
|
|
|
|
cLib_addCalc(&effect_p->mAlpha, var_f26, 0.5f, 0.02f, 0.00001f);
|
|
effect_p->mAlpha *= var_f31;
|
|
|
|
if (var_r27 != 0) {
|
|
effect_p->mAlpha = 0.0f;
|
|
}
|
|
|
|
if (dKy_darkworld_check() == 1 || var_r24 == 1) {
|
|
f32 var_f1_6 = sp6C.abs(camera_p->lookat.eye);
|
|
effect_p->field_0x48 = var_f1_6;
|
|
|
|
f32 var_f1_7;
|
|
if (var_f1_6 >= 800.0f) {
|
|
var_f1_7 = (var_f1_6 - 800.0f) / 825.0f;
|
|
if (var_f1_7 > 1.0f) {
|
|
var_f1_7 = 1.0f;
|
|
}
|
|
} else {
|
|
var_f1_7 = 0.0f;
|
|
}
|
|
|
|
effect_p->mAlpha = var_f1_7;
|
|
}
|
|
|
|
f32 var_f1_8 = sp6C.abs(camera_p->lookat.eye);
|
|
f32 temp_f25 = var_f1_8 / 2000.0f;
|
|
effect_p->field_0x48 = 1.0f - (temp_f25 * temp_f25);
|
|
}
|
|
}
|
|
|
|
/* 8005FBDC-8005FD48 05A51C 016C+00 0/0 1/1 0/0 .text dKyr_snow_init__Fv */
|
|
void dKyr_snow_init() {
|
|
camera_class* camera_p = g_dComIfG_gameInfo.play.mCameraInfo[0].mCamera;
|
|
g_env_light.mpSnowPacket = new (32) dKankyo_snow_Packet();
|
|
|
|
if (g_env_light.mpSnowPacket == NULL) {
|
|
return;
|
|
}
|
|
|
|
g_env_light.mpSnowPacket->mpTex = (u8*)dComIfG_getObjectRes("Always", 0x56);
|
|
|
|
for (int i = 0; i < 500; i++) {
|
|
g_env_light.mpSnowPacket->mSnowEff[i].mStatus = 0;
|
|
}
|
|
|
|
g_env_light.mpSnowPacket->field_0x6d88 = 0;
|
|
g_env_light.mpSnowPacket->field_0x6d74 = camera_p->lookat.eye;
|
|
g_env_light.mpSnowPacket->field_0x6d80 = 0.0f;
|
|
g_env_light.mpSnowPacket->field_0x6d84 = 0.0f;
|
|
g_env_light.mpSnowPacket->field_0x6d8a = 0;
|
|
g_env_light.mpSnowPacket->field_0x6d8c = 0;
|
|
g_env_light.mpSnowPacket->field_0x6d90 = 0;
|
|
g_env_light.mpSnowPacket->field_0x6d91 = 0;
|
|
g_env_light.mpSnowPacket->field_0x6d92 = 0;
|
|
g_env_light.mpSnowPacket->field_0x6d93 = 0;
|
|
}
|
|
|
|
/* 8005FD48-80061324 05A688 15DC+00 0/0 1/1 0/0 .text dKyr_snow_move__Fv */
|
|
// NONMATCHING mostly matches, 1 out of order instruction
|
|
void dKyr_snow_move() {
|
|
f32* temp_r26;
|
|
cXyz* temp_r25;
|
|
dKankyo_snow_Packet* snow_p = g_env_light.mpSnowPacket;
|
|
SNOW_EFF* effect_p;
|
|
camera_class* camera_p = (camera_class*)dComIfGp_getCamera(0);
|
|
fopAc_ac_c* player_p = dComIfGp_getPlayer(0);
|
|
|
|
DOUBLE_POS spC8;
|
|
cXyz spB8;
|
|
cXyz spAC;
|
|
cXyz spA0;
|
|
cXyz sp94 = dKyw_get_wind_vecpow();
|
|
cXyz sp88 = dKyw_get_wind_vecpow();
|
|
cXyz sp7C;
|
|
cXyz sp70;
|
|
|
|
dBgS_ObjGndChk_All spE0;
|
|
cXyz sp64;
|
|
|
|
if (snow_p->field_0x6d88 <= g_env_light.mSnowCount) {
|
|
snow_p->field_0x6d88 = g_env_light.mSnowCount;
|
|
}
|
|
|
|
if (snow_p->field_0x6d88 == 0) {
|
|
return;
|
|
}
|
|
|
|
sp64 = player_p->current.pos;
|
|
sp64.y += 100.0f;
|
|
spE0.SetPos(&sp64);
|
|
f32 temp_f19 = dComIfG_Bgsp().GroundCross(&spE0);
|
|
|
|
dKy_set_eyevect_calc2(camera_p, &spB8, 500.0f, 500.0f);
|
|
dKy_set_eyevect_calc2(camera_p, &spAC, 1000.0f, 1000.0f);
|
|
|
|
if (snow_p->field_0x6d74.abs(camera_p->lookat.eye) > 1500.0f) {
|
|
snow_p->field_0x6d88 = 0;
|
|
}
|
|
|
|
snow_p->field_0x6d74 = camera_p->lookat.eye;
|
|
spA0.z = 0.0f;
|
|
spA0.y = 0.0f;
|
|
spA0.x = 0.0f;
|
|
|
|
cXyz* temp_r21 = dKyw_get_wind_vec();
|
|
f32 var_f20 = dKyw_get_wind_pow();
|
|
if (g_env_light.field_0xe92 == 1) {
|
|
var_f20 *= 1.2f;
|
|
}
|
|
|
|
if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
|
|
sp94.x = 0.3f;
|
|
sp94.y = 0.0f;
|
|
sp94.z = 0.0f;
|
|
var_f20 = 0.3f;
|
|
}
|
|
|
|
cXyz sp58;
|
|
spC8.x = camera_p->lookat.center.x - camera_p->lookat.eye.x;
|
|
spC8.y = 0.0f;
|
|
spC8.z = camera_p->lookat.center.z - camera_p->lookat.eye.z;
|
|
vectle_calc(&spC8, &sp58);
|
|
|
|
snow_p->field_0x6d84 =
|
|
cM3d_VectorProduct2d(0.0f, 0.0f, -temp_r21->x, -temp_r21->z, sp58.x, sp58.z);
|
|
|
|
f32 temp_f20_1 = fabsf((temp_r21->x * sp58.x) + (temp_r21->z * sp58.z));
|
|
snow_p->field_0x6d80 = ((1.0f - temp_f20_1) * var_f20) * (1.0f - fabsf(temp_r21->y + 0.3f));
|
|
snow_p->field_0x6d80 *= fabsf(snow_p->field_0x6d84);
|
|
|
|
for (int i = snow_p->field_0x6d88 - 1; i >= 0; i--) {
|
|
f32 temp_f27 = -(2.0f + cM_rndF(6.5f));
|
|
f32 temp_f26 = 2.0f * (5.0f + (f32)(i & 15));
|
|
|
|
effect_p = &snow_p->mSnowEff[i];
|
|
switch (snow_p->mSnowEff[i].mStatus) {
|
|
case 0:
|
|
effect_p->mWindSpeed = temp_f26;
|
|
effect_p->mGravity = temp_f27;
|
|
effect_p->mTimer = 0;
|
|
effect_p->mBasePos.x = spAC.x + cM_rndFX(1100.0f);
|
|
effect_p->mBasePos.y = spAC.y + 1100.0f;
|
|
effect_p->mBasePos.z = spAC.z + cM_rndFX(1100.0f);
|
|
effect_p->mPosition.x = spB8.x + cM_rndFX(550.0f);
|
|
effect_p->mPosition.y = spB8.y + 550.0f;
|
|
effect_p->mPosition.z = spB8.z + cM_rndFX(550.0f);
|
|
effect_p->mScale = 0.0f;
|
|
effect_p->mPosWaveX = cM_rndF(65536.0f);
|
|
effect_p->mPosWaveZ = cM_rndF(65536.0f);
|
|
effect_p->mStatus++;
|
|
break;
|
|
case 1:
|
|
f32 target = cM_rndFX(0.08f);
|
|
temp_r26 = &effect_p->mWindSpeed;
|
|
target = effect_p->mWindSpeed - target;
|
|
|
|
cLib_addCalc(temp_r26, target, 0.5f, 0.1f, 0.01f);
|
|
|
|
cXyz sp4C;
|
|
sp88 = sp94;
|
|
temp_r25 = &effect_p->mPosition;
|
|
if (camera_p->lookat.eye.abs(*temp_r25) < 500.0f &&
|
|
effect_p->mPosition.y < temp_f19 + 250.0f)
|
|
{
|
|
f32 var_f1_3 = ((temp_f19 + 250.0f) - effect_p->mPosition.y) / 250.0f;
|
|
if (var_f1_3 > 1.0f) {
|
|
var_f1_3 = 1.0f;
|
|
}
|
|
|
|
sp88.y = var_f1_3 * 0.45f;
|
|
}
|
|
|
|
s16 wave_x = effect_p->mPosWaveX;
|
|
s16 wave_z = effect_p->mPosWaveZ;
|
|
|
|
sp4C.x = cM_scos(wave_x) * cM_ssin(wave_z);
|
|
sp4C.y = cM_ssin(wave_x);
|
|
sp4C.z = cM_scos(wave_x) * cM_scos(wave_z);
|
|
|
|
effect_p->mPosition.x += sp88.x * *temp_r26;
|
|
effect_p->mPosition.z += sp88.z * *temp_r26;
|
|
effect_p->mPosition.y += effect_p->mGravity + (sp88.y * *temp_r26);
|
|
|
|
effect_p->mPosition.x += sp4C.x * 5.3f;
|
|
effect_p->mPosition.y += sp4C.y * 5.3f;
|
|
effect_p->mPosition.z += sp4C.z * 5.3f;
|
|
|
|
sp88 = sp94;
|
|
if (camera_p->lookat.eye.abs(*temp_r25) < 500.0f &&
|
|
effect_p->mBasePos.y < temp_f19 + 250.0f)
|
|
{
|
|
f32 var_f1_5 = ((temp_f19 + 250.0f) - effect_p->mBasePos.y) / 250.0f;
|
|
if (var_f1_5 > 1.0f) {
|
|
var_f1_5 = 1.0f;
|
|
}
|
|
|
|
sp88.y = var_f1_5 * 0.35f;
|
|
}
|
|
|
|
effect_p->mBasePos.x += sp88.x * *temp_r26;
|
|
effect_p->mBasePos.z += sp88.z * *temp_r26;
|
|
effect_p->mBasePos.y += effect_p->mGravity + (sp88.y * *temp_r26);
|
|
|
|
effect_p->mBasePos.x += sp4C.x * 5.3f;
|
|
effect_p->mBasePos.y += sp4C.y * 5.3f;
|
|
effect_p->mBasePos.z += sp4C.z * 5.3f;
|
|
|
|
cLib_addCalc(&effect_p->mPosWaveX, effect_p->mPosWaveX + cM_rndF(3000.0f), 0.25f,
|
|
1500.0f, 0.001f);
|
|
cLib_addCalc(&effect_p->mPosWaveZ, effect_p->mPosWaveZ + cM_rndF(3000.0f), 0.25f,
|
|
1500.0f, 0.001f);
|
|
|
|
sp7C = effect_p->mPosition;
|
|
f32 var_f1_6 = sp7C.abs(spB8);
|
|
|
|
if (effect_p->mTimer == 0) {
|
|
if (var_f1_6 > 550.0f) {
|
|
effect_p->mTimer = 10;
|
|
*temp_r26 = temp_f26;
|
|
effect_p->mGravity = temp_f27;
|
|
|
|
if (sp7C.abs(spB8) > 600.0f) {
|
|
effect_p->mPosition.x = spB8.x + cM_rndFX(550.0f);
|
|
effect_p->mPosition.y = spB8.y + cM_rndFX(550.0f);
|
|
effect_p->mPosition.z = spB8.z + cM_rndFX(550.0f);
|
|
} else {
|
|
f32 temp_f26_2 = cM_rndFX(55.0f);
|
|
get_vectle_calc(&sp7C, &spB8, &sp70);
|
|
|
|
effect_p->mPosition.x = spB8.x + sp70.x * (temp_f26_2 + 550.0f);
|
|
effect_p->mPosition.y = spB8.y + sp70.y * (temp_f26_2 + 550.0f);
|
|
effect_p->mPosition.z = spB8.z + sp70.z * (temp_f26_2 + 550.0f);
|
|
}
|
|
}
|
|
} else {
|
|
effect_p->mTimer--;
|
|
}
|
|
|
|
sp7C = effect_p->mBasePos;
|
|
if (sp7C.abs(spAC) > 1100.0f) {
|
|
if (sp7C.abs(spAC) > 1150.0f) {
|
|
effect_p->mBasePos.x = spAC.x + cM_rndFX(1100.0f);
|
|
effect_p->mBasePos.y = spAC.y + cM_rndFX(1100.0f);
|
|
effect_p->mBasePos.z = spAC.z + cM_rndFX(1100.0f);
|
|
} else {
|
|
f32 temp_f26_3 = cM_rndFX(27.5f);
|
|
get_vectle_calc(&sp7C, &spAC, &sp70);
|
|
|
|
effect_p->mBasePos.x = spAC.x + sp70.x * (temp_f26_3 + 1100.0f);
|
|
effect_p->mBasePos.y = spAC.y + sp70.y * (temp_f26_3 + 1100.0f);
|
|
effect_p->mBasePos.z = spAC.z + sp70.z * (temp_f26_3 + 1100.0f);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
|
|
sp7C = effect_p->mPosition;
|
|
|
|
f32 var_f26 = sp7C.abs(camera_p->lookat.eye) / 100.0f;
|
|
if (var_f26 > 1.0) {
|
|
var_f26 = 1.0;
|
|
}
|
|
|
|
var_f26 *= 0.4f;
|
|
|
|
f32 var_f1_11 = sp7C.abs(spB8);
|
|
if (var_f1_11 > 300.0f) {
|
|
f32 var_f1_12 = (550.0f - var_f1_11) / 250.0f;
|
|
if (var_f1_12 < 0.0f) {
|
|
var_f1_12 = 0.0f;
|
|
}
|
|
|
|
var_f26 *= var_f1_12;
|
|
}
|
|
|
|
if (i > g_env_light.mSnowCount - 1) {
|
|
cLib_addCalc(&effect_p->mScale, 0.0f, 0.2f, 0.1f, 0.01f);
|
|
} else {
|
|
effect_p->mScale = var_f26;
|
|
}
|
|
|
|
if (i > g_env_light.mSnowCount - 1 && effect_p->mScale < 0.01f) {
|
|
if (i == snow_p->field_0x6d88 - 1) {
|
|
snow_p->field_0x6d88--;
|
|
}
|
|
}
|
|
|
|
if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
|
|
if (sp7C.z > -340.0f) {
|
|
effect_p->mScale = 0.0f;
|
|
}
|
|
} else if (strcmp(dComIfGp_getStartStageName(), "F_SP127") == 0) {
|
|
if (sp7C.z > 9800.0f) {
|
|
effect_p->mScale = 0.0f;
|
|
}
|
|
}
|
|
|
|
sp7C = effect_p->mBasePos;
|
|
|
|
f32 var_f26_3 = sp7C.abs(camera_p->lookat.eye) / 100.0f;
|
|
if (var_f26_3 > 1.0) {
|
|
var_f26_3 = 1.0;
|
|
}
|
|
|
|
var_f26_3 *= 0.38f;
|
|
|
|
f32 var_f1_14 = sp7C.abs(spAC);
|
|
if (var_f1_14 > 850.0f) {
|
|
f32 var_f1_15 = (1100.0f - var_f1_14) / 250.0f;
|
|
if (var_f1_15 < 0.0f) {
|
|
var_f1_15 = 0.0f;
|
|
}
|
|
|
|
var_f26_3 *= var_f1_15;
|
|
}
|
|
|
|
if (i > g_env_light.mSnowCount - 1) {
|
|
cLib_addCalc(&effect_p->field_0x30, 0.0f, 0.2f, 0.1f, 0.01f);
|
|
} else {
|
|
effect_p->field_0x30 = var_f26_3;
|
|
}
|
|
|
|
if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
|
|
if (sp7C.z > -340.0f) {
|
|
effect_p->field_0x30 = 0.0f;
|
|
}
|
|
} else if (strcmp(dComIfGp_getStartStageName(), "F_SP127") == 0) {
|
|
if (sp7C.z > 9800.0f) {
|
|
effect_p->field_0x30 = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 80061324-8006140C 05BC64 00E8+00 0/0 1/1 0/0 .text dKyr_star_init__Fv */
|
|
void dKyr_star_init() {
|
|
camera_class* camera_p = g_dComIfG_gameInfo.play.mCameraInfo[0].mCamera;
|
|
g_env_light.mpStarPacket = new (32) dKankyo_star_Packet();
|
|
|
|
if (g_env_light.mpStarPacket == NULL) {
|
|
return;
|
|
}
|
|
|
|
g_env_light.mpStarPacket->field_0x10 = (u8*)dComIfG_getObjectRes("Always", 0x4a);
|
|
g_env_light.mpStarPacket->mEffect[0].field_0x28 = 1.0f;
|
|
g_env_light.mpStarPacket->mEffectNum = 0;
|
|
}
|
|
|
|
|
|
/* 8006140C-80061438 05BD4C 002C+00 0/0 1/1 0/0 .text dKyr_star_move__Fv */
|
|
void dKyr_star_move() {
|
|
dKankyo_star_Packet* packet = g_env_light.mpStarPacket;
|
|
packet->mEffectNum = g_env_light.mStarCount;
|
|
|
|
if (packet->mEffectNum != 0) {
|
|
packet->mEffect[0].field_0x28 = 1.0f;
|
|
}
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 8037A578-8037A578 006BD8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_8037A5CC = "D_MN05A";
|
|
#pragma pop
|
|
|
|
/* 804523E4-804523E8 0009E4 0004+00 2/2 0/0 0/0 .sdata2 @6720 */
|
|
SECTION_SDATA2 static f32 lit_6720 = 0.004999999888241291f;
|
|
|
|
/* 804523E8-804523EC 0009E8 0004+00 7/7 0/0 0/0 .sdata2 @6721 */
|
|
SECTION_SDATA2 static f32 lit_6721 = 9.999999974752427e-07f;
|
|
|
|
/* 804523EC-804523F0 0009EC 0004+00 1/1 0/0 0/0 .sdata2 @6722 */
|
|
SECTION_SDATA2 static f32 lit_6722 = -300.0f;
|
|
|
|
/* 804523F0-804523F4 0009F0 0004+00 2/2 0/0 0/0 .sdata2 @6723 */
|
|
SECTION_SDATA2 static f32 lit_6723 = 65535.0f;
|
|
|
|
/* 804523F4-804523F8 0009F4 0004+00 1/1 0/0 0/0 .sdata2 @6724 */
|
|
SECTION_SDATA2 static f32 lit_6724 = 0.027000002562999725f;
|
|
|
|
/* 804523F8-804523FC 0009F8 0004+00 1/1 0/0 0/0 .sdata2 @6725 */
|
|
SECTION_SDATA2 static f32 lit_6725 = 23.0f;
|
|
|
|
/* 804523FC-80452400 0009FC 0004+00 5/5 0/0 0/0 .sdata2 @6726 */
|
|
SECTION_SDATA2 static f32 lit_6726 = 120.0f;
|
|
|
|
/* 80452400-80452404 000A00 0004+00 1/1 0/0 0/0 .sdata2 @6727 */
|
|
SECTION_SDATA2 static f32 lit_6727 = 1540.0f;
|
|
|
|
/* 80452404-80452408 000A04 0004+00 1/1 0/0 0/0 .sdata2 @6728 */
|
|
SECTION_SDATA2 static f32 lit_6728 = 1040.0f;
|
|
|
|
/* 80452408-8045240C 000A08 0004+00 1/1 0/0 0/0 .sdata2 @6729 */
|
|
SECTION_SDATA2 static f32 lit_6729 = 44.0f;
|
|
|
|
/* 8045240C-80452410 000A0C 0004+00 1/1 0/0 0/0 .sdata2 @6730 */
|
|
SECTION_SDATA2 static f32 lit_6730 = 408.0f;
|
|
|
|
/* 80452410-80452414 000A10 0004+00 2/2 0/0 0/0 .sdata2 @6731 */
|
|
SECTION_SDATA2 static f32 lit_6731 = 3.0f / 25.0f;
|
|
|
|
/* 80452414-80452418 000A14 0004+00 1/1 0/0 0/0 .sdata2 @6732 */
|
|
SECTION_SDATA2 static f32 lit_6732 = 6.0f / 25.0f;
|
|
|
|
/* 80452418-8045241C 000A18 0004+00 1/1 0/0 0/0 .sdata2 @6733 */
|
|
SECTION_SDATA2 static f32 lit_6733 = 9.0f / 25.0f;
|
|
|
|
/* 8045241C-80452420 000A1C 0004+00 2/2 0/0 0/0 .sdata2 @6734 */
|
|
SECTION_SDATA2 static f32 lit_6734 = 9.0f / 100.0f;
|
|
|
|
/* 80452420-80452424 000A20 0004+00 1/1 0/0 0/0 .sdata2 @6735 */
|
|
SECTION_SDATA2 static f32 lit_6735 = 13.0f / 100.0f;
|
|
|
|
/* 80452424-80452428 000A24 0004+00 2/2 0/0 0/0 .sdata2 @6736 */
|
|
SECTION_SDATA2 static f32 lit_6736 = 7.0f / 10.0f;
|
|
|
|
/* 80061438-800620AC 05BD78 0C74+00 0/0 1/1 0/0 .text cloud_shadow_move__Fv */
|
|
void cloud_shadow_move() {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 8037A578-8037A578 006BD8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_8037A5D4 = "D_MN07A";
|
|
#pragma pop
|
|
|
|
/* 80452428-8045242C 000A28 0004+00 1/1 0/0 0/0 .sdata2 @6947 */
|
|
SECTION_SDATA2 static f32 lit_6947 = 2500.0f;
|
|
|
|
/* 8045242C-80452430 000A2C 0004+00 1/1 0/0 0/0 .sdata2 @6948 */
|
|
SECTION_SDATA2 static f32 lit_6948 = 25.0f;
|
|
|
|
/* 80452430-80452438 000A30 0004+04 1/1 0/0 0/0 .sdata2 @6949 */
|
|
SECTION_SDATA2 static f32 lit_6949[1 + 1 /* padding */] = {
|
|
18000.0f,
|
|
/* padding */
|
|
0.0f,
|
|
};
|
|
|
|
/* 80452438-80452440 000A38 0008+00 1/1 0/0 0/0 .sdata2 @6950 */
|
|
SECTION_SDATA2 static f64 lit_6950 = 14000.0;
|
|
|
|
/* 80452440-80452444 000A40 0004+00 1/1 0/0 0/0 .sdata2 @6951 */
|
|
SECTION_SDATA2 static f32 lit_6951 = 15000.0f;
|
|
|
|
/* 80452444-80452448 000A44 0004+00 3/3 0/0 0/0 .sdata2 @6952 */
|
|
SECTION_SDATA2 static f32 lit_6952 = 5000.0f;
|
|
|
|
/* 80452448-8045244C 000A48 0004+00 1/1 0/0 0/0 .sdata2 @6953 */
|
|
SECTION_SDATA2 static f32 lit_6953 = 15100.0f;
|
|
|
|
/* 8045244C-80452450 000A4C 0004+00 1/1 0/0 0/0 .sdata2 @6954 */
|
|
SECTION_SDATA2 static f32 lit_6954 = -7.0f / 10.0f;
|
|
|
|
/* 80452450-80452454 000A50 0004+00 1/1 0/0 0/0 .sdata2 @6955 */
|
|
SECTION_SDATA2 static f32 lit_6955 = 1.0f / 40.0f;
|
|
|
|
/* 800620AC-80062ADC 05C9EC 0A30+00 0/0 1/1 0/0 .text vrkumo_move__Fv */
|
|
void vrkumo_move() {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* 80062ADC-80062B4C 05D41C 0070+00 7/7 0/0 0/0 .text dKr_cullVtx_Set__Fv */
|
|
static void dKr_cullVtx_Set() {
|
|
GXSetCullMode(GX_CULL_NONE);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 8);
|
|
GXClearVtxDesc();
|
|
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
|
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 8037A4E8-8037A508 006B48 0020+00 1/1 0/0 0/0 .rodata @6991 */
|
|
SECTION_RODATA static u8 const lit_6991[32] = {
|
|
0x3F, 0x80, 0x00, 0x00, 0x3F, 0x54, 0x7A, 0xE1, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x47, 0xAE, 0x14,
|
|
0x3F, 0x80, 0x00, 0x00, 0x3F, 0x47, 0xAE, 0x14, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x54, 0x7A, 0xE1,
|
|
};
|
|
COMPILER_STRIP_GATE(0x8037A4E8, &lit_6991);
|
|
|
|
/* 803A9BB8-803A9BD8 -00001 0020+00 1/1 0/0 0/0 .data @7214 */
|
|
SECTION_DATA static void* lit_7214[8] = {
|
|
(void*)(((char*)dKyr_draw_rev_moon__FPA4_fPPUc) + 0x150),
|
|
(void*)(((char*)dKyr_draw_rev_moon__FPA4_fPPUc) + 0x15C),
|
|
(void*)(((char*)dKyr_draw_rev_moon__FPA4_fPPUc) + 0x168),
|
|
(void*)(((char*)dKyr_draw_rev_moon__FPA4_fPPUc) + 0x174),
|
|
(void*)(((char*)dKyr_draw_rev_moon__FPA4_fPPUc) + 0x180),
|
|
(void*)(((char*)dKyr_draw_rev_moon__FPA4_fPPUc) + 0x18C),
|
|
(void*)(((char*)dKyr_draw_rev_moon__FPA4_fPPUc) + 0x198),
|
|
(void*)(((char*)dKyr_draw_rev_moon__FPA4_fPPUc) + 0x1A4),
|
|
};
|
|
|
|
/* 80452454-80452458 000A54 0004+00 5/5 0/0 0/0 .sdata2 @7208 */
|
|
SECTION_SDATA2 static f32 lit_7208 = -1.0f;
|
|
|
|
/* 80452458-8045245C 000A58 0004+00 8/8 0/0 0/0 .sdata2 @7209 */
|
|
SECTION_SDATA2 static f32 lit_7209 = 45.0f;
|
|
|
|
/* 8045245C-80452460 000A5C 0004+00 2/2 0/0 0/0 .sdata2 @7210 */
|
|
SECTION_SDATA2 static f32 lit_7210 = -6.2831854820251465f;
|
|
|
|
/* 80452460-80452464 000A60 0004+00 12/12 0/0 0/0 .sdata2 @7211 */
|
|
SECTION_SDATA2 static f32 lit_7211 = 0.01745329238474369f;
|
|
|
|
/* 80452464-80452468 000A64 0004+00 2/2 0/0 0/0 .sdata2 @7212 */
|
|
SECTION_SDATA2 static f32 lit_7212 = 11000.0f;
|
|
|
|
/* 80452468-8045246C 000A68 0004+00 2/2 0/0 0/0 .sdata2 @7213 */
|
|
SECTION_SDATA2 static f32 lit_7213 = 2.3f;
|
|
|
|
/* 80062B4C-80063670 05D48C 0B24+00 2/1 0/0 0/0 .text dKyr_draw_rev_moon__FPA4_fPPUc */
|
|
static void dKyr_draw_rev_moon(Mtx param_0, u8** param_1) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 8037A508-8037A528 006B68 0020+00 1/1 0/0 0/0 .rodata @7275 */
|
|
SECTION_RODATA static u8 const lit_7275[32] = {
|
|
0x3F, 0x80, 0x00, 0x00, 0x3F, 0x54, 0x7A, 0xE1, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x47, 0xAE, 0x14,
|
|
0x3F, 0x80, 0x00, 0x00, 0x3F, 0x47, 0xAE, 0x14, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x54, 0x7A, 0xE1,
|
|
};
|
|
COMPILER_STRIP_GATE(0x8037A508, &lit_7275);
|
|
|
|
/* 8037A578-8037A578 006BD8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_8037A5DC = "F_SP103";
|
|
SECTION_DEAD static char const* const stringBase_8037A5E4 = "APPEAR_HAWKER";
|
|
#pragma pop
|
|
|
|
/* 803A9BD8-803A9BF8 -00001 0020+00 1/1 0/0 0/0 .data @7549 */
|
|
SECTION_DATA static void* lit_7549[8] = {
|
|
(void*)(((char*)dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc) + 0x354),
|
|
(void*)(((char*)dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc) + 0x360),
|
|
(void*)(((char*)dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc) + 0x36C),
|
|
(void*)(((char*)dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc) + 0x378),
|
|
(void*)(((char*)dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc) + 0x384),
|
|
(void*)(((char*)dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc) + 0x390),
|
|
(void*)(((char*)dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc) + 0x39C),
|
|
(void*)(((char*)dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc) + 0x3A8),
|
|
};
|
|
|
|
/* 8045246C-80452470 000A6C 0004+00 2/2 0/0 0/0 .sdata2 @7545 */
|
|
SECTION_SDATA2 static f32 lit_7545 = 3900.0f;
|
|
|
|
/* 80452470-80452474 000A70 0004+00 2/2 0/0 0/0 .sdata2 @7546 */
|
|
SECTION_SDATA2 static f32 lit_7546 = 8052.0f;
|
|
|
|
/* 80452474-80452478 000A74 0004+00 2/2 0/0 0/0 .sdata2 @7547 */
|
|
SECTION_SDATA2 static f32 lit_7547 = -9072.0f;
|
|
|
|
/* 80452478-8045247C 000A78 0004+00 1/1 0/0 0/0 .sdata2 @7548 */
|
|
SECTION_SDATA2 static f32 lit_7548 = 2400.0f;
|
|
|
|
/* 80063670-8006444C 05DFB0 0DDC+00 1/0 1/1 0/0 .text dKyr_drawSun__FPA4_fP4cXyzR8_GXColorPPUc */
|
|
void dKyr_drawSun(Mtx param_0, cXyz* param_1, _GXColor& param_2, u8** param_3) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 8037A528-8037A548 006B88 0020+00 1/1 0/0 0/0 .rodata scale_dat$7608 */
|
|
SECTION_RODATA static u8 const scale_dat[32] = {
|
|
0x45, 0xFA, 0x00, 0x00, 0x46, 0x24, 0x10, 0x00, 0x40, 0x4C, 0xCC, 0xCD, 0x3F, 0xE6, 0x66, 0x66,
|
|
0x3F, 0xE6, 0x66, 0x66, 0x40, 0xC6, 0x66, 0x66, 0x3F, 0x99, 0x99, 0x9A, 0x40, 0x80, 0x00, 0x00,
|
|
};
|
|
COMPILER_STRIP_GATE(0x8037A528, &scale_dat);
|
|
|
|
/* 8037A548-8037A568 006BA8 0020+00 1/1 0/0 0/0 .rodata col_dat$7609 */
|
|
SECTION_RODATA static u8 const col_dat[32] = {
|
|
0xB4, 0xC8, 0xFF, 0xFF, 0xC8, 0xC8, 0xFF, 0x50, 0xFF, 0x8C, 0x78, 0x5A, 0xFF, 0xB4, 0x78, 0x64,
|
|
0xB4, 0xB4, 0x78, 0x55, 0xB4, 0xC8, 0x64, 0x5A, 0xDC, 0xFF, 0xB4, 0x6E, 0xC8, 0xDC, 0xFF, 0x5A,
|
|
};
|
|
COMPILER_STRIP_GATE(0x8037A548, &col_dat);
|
|
|
|
/* 80450EF0-80450EF4 -00001 0004+00 1/1 0/0 0/0 .sbss None */
|
|
/* 80450EF0 0002+00 data_80450EF0 None */
|
|
/* 80450EF2 0002+00 data_80450EF2 S_rot_work2$7557 */
|
|
static u8 struct_80450EF0[4];
|
|
|
|
/* 80450EF4-80450EF8 0003F4 0004+00 1/1 0/0 0/0 .sbss None */
|
|
static u8 data_80450EF4[4];
|
|
|
|
/* 8045247C-80452480 000A7C 0004+00 1/1 0/0 0/0 .sdata2 @7882 */
|
|
SECTION_SDATA2 static f32 lit_7882 = 2.9f;
|
|
|
|
/* 80452480-80452484 000A80 0004+00 2/2 0/0 0/0 .sdata2 @7883 */
|
|
SECTION_SDATA2 static f32 lit_7883 = 34.0f;
|
|
|
|
/* 80452484-80452488 000A84 0004+00 1/1 0/0 0/0 .sdata2 @7884 */
|
|
SECTION_SDATA2 static f32 lit_7884 = 160.0f;
|
|
|
|
/* 80452488-8045248C 000A88 0004+00 1/1 0/0 0/0 .sdata2 @7885 */
|
|
SECTION_SDATA2 static f32 lit_7885 = 0.86f;
|
|
|
|
/* 8045248C-80452490 000A8C 0004+00 1/1 0/0 0/0 .sdata2 @7886 */
|
|
SECTION_SDATA2 static f32 lit_7886 = 2.46f;
|
|
|
|
/* 80452490-80452494 000A90 0004+00 2/2 0/0 0/0 .sdata2 @7887 */
|
|
SECTION_SDATA2 static f32 lit_7887 = 1.1f;
|
|
|
|
/* 80452494-80452498 000A94 0004+00 1/1 0/0 0/0 .sdata2 @7888 */
|
|
SECTION_SDATA2 static f32 lit_7888 = 0.04f;
|
|
|
|
/* 80452498-8045249C 000A98 0004+00 1/1 0/0 0/0 .sdata2 @7889 */
|
|
SECTION_SDATA2 static f32 lit_7889 = 0.075f;
|
|
|
|
/* 8045249C-804524A0 000A9C 0004+00 1/1 0/0 0/0 .sdata2 @7890 */
|
|
SECTION_SDATA2 static f32 lit_7890 = 0.88f;
|
|
|
|
/* 804524A0-804524A4 000AA0 0004+00 1/1 0/0 0/0 .sdata2 @7891 */
|
|
SECTION_SDATA2 static f32 lit_7891 = 30.599998474121094f;
|
|
|
|
/* 804524A4-804524A8 000AA4 0004+00 4/4 0/0 0/0 .sdata2 @7892 */
|
|
SECTION_SDATA2 static f32 lit_7892 = 140.0f;
|
|
|
|
/* 804524A8-804524AC 000AA8 0004+00 1/1 0/0 0/0 .sdata2 @7893 */
|
|
SECTION_SDATA2 static f32 lit_7893 = 0.85f;
|
|
|
|
/* 804524AC-804524B0 000AAC 0004+00 2/2 0/0 0/0 .sdata2 @7894 */
|
|
SECTION_SDATA2 static f32 lit_7894 = 60.0f;
|
|
|
|
/* 8006444C-8006562C 05ED8C 11E0+00 0/0 1/1 0/0 .text
|
|
* dKyr_drawLenzflare__FPA4_fP4cXyzR8_GXColorPPUc */
|
|
void dKyr_drawLenzflare(Mtx param_0, cXyz* param_1, _GXColor& param_2, u8** param_3) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80424950-8042495C 051670 000C+00 3/3 0/0 0/0 .bss @7952 */
|
|
static u8 lit_7952[12];
|
|
|
|
/* 8042495C-80424968 05167C 000C+00 0/1 0/0 0/0 .bss @7955 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_7955[12];
|
|
#pragma pop
|
|
|
|
/* 80424968-80424974 051688 000C+00 0/1 0/0 0/0 .bss @7956 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_7956[12];
|
|
#pragma pop
|
|
|
|
/* 80424974-80424980 051694 000C+00 0/1 0/0 0/0 .bss @7957 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_7957[12];
|
|
#pragma pop
|
|
|
|
/* 80424980-804249B0 0516A0 0030+00 0/1 0/0 0/0 .bss add_table$7951 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 add_table_7951[48];
|
|
#pragma pop
|
|
|
|
/* 80450EF8-80450EFC 0003F8 0004+00 1/1 0/0 0/0 .sbss rot$7919 */
|
|
static u8 rot_7919[4];
|
|
|
|
/* 80450EFC-80450F00 -00001 0004+00 1/1 0/0 0/0 .sbss None */
|
|
/* 80450EFC 0001+00 data_80450EFC None */
|
|
/* 80450EFD 0003+00 data_80450EFD None */
|
|
static u8 struct_80450EFC[4];
|
|
|
|
/* 804524B0-804524B4 000AB0 0004+00 2/2 0/0 0/0 .sdata2 @8211 */
|
|
SECTION_SDATA2 static f32 lit_8211 = 70.0f;
|
|
|
|
/* 804524B4-804524B8 000AB4 0004+00 1/1 0/0 0/0 .sdata2 @8212 */
|
|
SECTION_SDATA2 static f32 lit_8212 = -1.5f;
|
|
|
|
/* 804524B8-804524BC 000AB8 0004+00 5/5 0/0 0/0 .sdata2 @8213 */
|
|
SECTION_SDATA2 static f32 lit_8213 = 150.0f;
|
|
|
|
/* 804524BC-804524C0 000ABC 0004+00 1/1 0/0 0/0 .sdata2 @8214 */
|
|
SECTION_SDATA2 static f32 lit_8214 = 320.0f;
|
|
|
|
/* 804524C0-804524C4 000AC0 0004+00 1/1 0/0 0/0 .sdata2 @8215 */
|
|
SECTION_SDATA2 static f32 lit_8215 = 480.0f;
|
|
|
|
/* 8006562C-80066048 05FF6C 0A1C+00 0/0 1/1 0/0 .text dKyr_drawRain__FPA4_fPPUc */
|
|
void dKyr_drawRain(Mtx param_0, u8** param_1) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* 80066048-8006653C 060988 04F4+00 0/0 1/1 0/0 .text dKyr_drawSibuki__FPA4_fPPUc */
|
|
// NONMATCHING stack issues, double branch weirdness
|
|
void dKyr_drawSibuki(Mtx param_0, u8** param_1) {
|
|
camera_class* temp_r30 = (camera_class*)dComIfGp_getCamera(0);
|
|
dKankyo_rain_Packet* temp_r29 = g_env_light.mpRainPacket;
|
|
|
|
Mtx sp88;
|
|
cXyz sp7C;
|
|
cXyz sp70;
|
|
cXyz sp64;
|
|
cXyz sp58;
|
|
|
|
GXTexObj sp38;
|
|
|
|
cXyz sp2C;
|
|
cXyz sp20;
|
|
cXyz sp14;
|
|
|
|
if (g_env_light.mSnowCount == 0 && g_env_light.mCameraInWater == 0 &&
|
|
dComIfGd_getView() != NULL)
|
|
{
|
|
MTXInverse(dComIfGd_getView()->viewMtxNoTrans, sp88);
|
|
if (strcmp(dComIfGp_getStartStageName(), "F_SP113") == 0 &&
|
|
dComIfGp_roomControl_getStayNo() == 1)
|
|
{
|
|
if ((temp_r30->lookat.eye.z < 5100.0f ||
|
|
(temp_r30->lookat.eye.x < -3250.0f && temp_r30->lookat.eye.y < -50.0f)) ||
|
|
(temp_r30->lookat.eye.x < -2700.0f && temp_r30->lookat.eye.z > 15750.0f))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
f32 var_f1 = 255.0f;
|
|
if (temp_r29->mStatus & 1) {
|
|
var_f1 = 0.0f;
|
|
} else if (temp_r29->mStatus & 2) {
|
|
var_f1 = 200.0f;
|
|
}
|
|
|
|
cLib_addCalc(&temp_r29->mSibukiAlpha, var_f1, 0.2f, 30.0f, 0.001f);
|
|
dKy_set_eyevect_calc(temp_r30, &sp2C, 7000.0f, 4000.0f);
|
|
dKyr_get_vectle_calc(&temp_r30->lookat.eye, &temp_r30->lookat.center, &sp20);
|
|
|
|
f32 var_f1_2 = 0.0f;
|
|
if (sp20.y > var_f1_2) {
|
|
if (sp20.y < 0.5f) {
|
|
var_f1_2 = 1.0f - (sp20.y / 0.5f);
|
|
}
|
|
} else {
|
|
var_f1_2 = 1.0f;
|
|
}
|
|
|
|
GXColor sp10;
|
|
sp10.r = 0xB4;
|
|
sp10.g = 0xC8;
|
|
sp10.b = 0xC8;
|
|
sp10.a = temp_r29->mSibukiAlpha * var_f1_2;
|
|
|
|
dKyr_set_btitex(&sp38, (ResTIMG*)*(++param_1));
|
|
GXSetNumChans(0);
|
|
GXSetTevColor(GX_TEVREG0, sp10);
|
|
GXSetTevColor(GX_TEVREG1, sp10);
|
|
GXSetNumTexGens(1);
|
|
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D);
|
|
GXSetNumTevStages(1);
|
|
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
|
|
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C1, GX_CC_C0, GX_CC_TEXC, GX_CC_ZERO);
|
|
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_A0, GX_CA_TEXA, GX_CA_ZERO);
|
|
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_ONE, GX_LO_COPY);
|
|
GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
|
|
GXSetZMode(GX_TRUE, GX_GEQUAL, GX_FALSE);
|
|
GXSetClipMode(GX_CLIP_DISABLE);
|
|
GXSetNumIndStages(0);
|
|
dKr_cullVtx_Set();
|
|
GXLoadPosMtxImm(param_0, 0);
|
|
GXSetCurrentMtx(0);
|
|
|
|
f32 var_f30;
|
|
if (dComIfGd_getView() != NULL) {
|
|
var_f30 = dComIfGd_getView()->fovy / 45.0f;
|
|
var_f30 *= var_f30;
|
|
if (var_f30 >= 1.0f) {
|
|
var_f30 = 1.0f;
|
|
}
|
|
} else {
|
|
var_f30 = 0.2f;
|
|
}
|
|
|
|
for (int i = 0; i < g_env_light.mRainCount >> 1; i++) {
|
|
f32 temp_f27 = var_f30 * (15.0f + cM_rndF(10.0f));
|
|
|
|
f32 temp_f28 = cM_rndFX(3600.0f);
|
|
f32 temp_f29 = cM_rndFX(1500.0f);
|
|
f32 temp_f1 = cM_rndFX(3600.0f);
|
|
|
|
sp14.x = sp2C.x + temp_f28;
|
|
sp14.y = sp2C.y + temp_f29;
|
|
sp14.z = sp2C.z + temp_f1;
|
|
|
|
sp58.x = sp14.x - temp_f27;
|
|
sp58.y = sp14.y;
|
|
sp58.z = sp14.z - temp_f27;
|
|
|
|
sp64.x = sp14.x + temp_f27;
|
|
sp64.y = sp14.y;
|
|
sp64.z = sp14.z - temp_f27;
|
|
|
|
sp70.x = sp14.x + temp_f27;
|
|
sp70.y = sp14.y;
|
|
sp70.z = sp14.z + temp_f27;
|
|
|
|
sp7C.x = sp14.x - temp_f27;
|
|
sp7C.y = sp14.y;
|
|
sp7C.z = sp14.z + temp_f27;
|
|
|
|
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
|
GXPosition3f32(sp58.x, sp58.y, sp58.z);
|
|
GXTexCoord2s16(0, 0);
|
|
|
|
GXPosition3f32(sp64.x, sp64.y, sp64.z);
|
|
GXTexCoord2s16(0x1FF, 0);
|
|
|
|
GXPosition3f32(sp70.x, sp70.y, sp70.z);
|
|
GXTexCoord2s16(0x1FF, 0x1FF);
|
|
|
|
GXPosition3f32(sp7C.x, sp7C.y, sp7C.z);
|
|
GXTexCoord2s16(0, 0x1FF);
|
|
GXEnd();
|
|
}
|
|
|
|
GXSetClipMode(GX_CLIP_ENABLE);
|
|
J3DShape::resetVcdVatCache();
|
|
}
|
|
}
|
|
|
|
/* 8006653C-80067488 060E7C 0F4C+00 0/0 1/1 0/0 .text dKyr_drawHousi__FPA4_fPPUc */
|
|
// NONMATCHING mostly match, weird double branch thing
|
|
void dKyr_drawHousi(Mtx param_0, u8** param_1) {
|
|
dKankyo_housi_Packet* housi_p = g_env_light.mpHousiPacket;
|
|
static f32 rot = 0.0f;
|
|
|
|
Mtx sp1BC;
|
|
Mtx sp18C;
|
|
cXyz sp15C[4];
|
|
GXTexObj spDC;
|
|
cXyz spD0;
|
|
Vec spC4;
|
|
Vec spB8;
|
|
|
|
bool var_r28 = 0;
|
|
if (housi_p->field_0x5dec != 0) {
|
|
if (strcmp(dComIfGp_getStartStageName(), "D_MN08") == 0) {
|
|
var_r28 = 1;
|
|
}
|
|
|
|
if (strcmp(dComIfGp_getStartStageName(), "D_MN08") != 0 ||
|
|
dComIfGp_roomControl_getStayNo() == 0 || dComIfGp_roomControl_getStayNo() == 11)
|
|
{
|
|
j3dSys.reinitGX();
|
|
f32 var_f25 = 120.0f;
|
|
|
|
if (g_env_light.field_0xea9 == 1) {
|
|
var_f25 = 140.0f;
|
|
} else if (g_env_light.mCameraInWater != 0) {
|
|
return;
|
|
}
|
|
|
|
GXColor sp24;
|
|
sp24.r = 0xE5;
|
|
sp24.g = 0xFF;
|
|
sp24.b = 0xC8;
|
|
sp24.a = var_f25;
|
|
|
|
GXColor sp20;
|
|
sp20.r = 0x43;
|
|
sp20.g = 0xD2;
|
|
sp20.b = 0xCA;
|
|
sp20.a = 0xFF;
|
|
|
|
if (dKy_darkworld_check() == 1 || var_r28 == 1) {
|
|
sp24.r = 0;
|
|
sp24.g = 0;
|
|
sp24.b = 0;
|
|
sp24.a = var_f25;
|
|
sp20.r = 0;
|
|
sp20.g = 0;
|
|
sp20.b = 0;
|
|
sp20.a = 0xFF;
|
|
var_f25 = 255.0f;
|
|
} else if (g_env_light.field_0xea9 == 1) {
|
|
sp24.r = 0xFF;
|
|
sp24.g = 0xFF;
|
|
sp24.b = 0xFF;
|
|
sp20.r = 0;
|
|
sp20.g = 0x50;
|
|
sp20.b = 0x50;
|
|
} else if (g_env_light.field_0xea9 == 2 &&
|
|
(g_env_light.mPondSeason == 1 || g_env_light.mPondSeason == 3))
|
|
{
|
|
GXColor sp1C = {0x32, 0x32, 0x32, 0xFF};
|
|
GXColor sp18 = {0xFF, 0xD7, 0xF0, 0xFF};
|
|
|
|
camera_class* cam_p = dComIfGp_getCamera(0);
|
|
if (g_env_light.mPondSeason == 3) {
|
|
sp1C.r = 0x78;
|
|
sp1C.g = 0x0A;
|
|
sp1C.b = 0x14;
|
|
sp18.r = 0x14;
|
|
sp18.g = 0x3C;
|
|
sp18.b = 0x00;
|
|
}
|
|
|
|
dKy_ParticleColor_get_bg(&cam_p->lookat.eye, NULL, &sp20, &sp24, &sp1C, &sp18,
|
|
0.0f);
|
|
var_f25 = 255.0f;
|
|
}
|
|
|
|
if (dComIfGd_getView() != NULL) {
|
|
f32 temp_f26 = 1.2f;
|
|
f32 temp_f24 = 6.5f;
|
|
|
|
// MTXInverse(dComIfGd_getView()->viewMtxNoTrans, sp1BC);
|
|
// wtf is going on here
|
|
switch (MTXInverse(dComIfGd_getView()->viewMtxNoTrans, sp1BC)) {
|
|
case 0:
|
|
return;
|
|
}
|
|
|
|
for (int i = 0; i < 1; i++) {
|
|
dKyr_set_btitex(&spDC, (ResTIMG*)*param_1);
|
|
GXSetNumChans(0);
|
|
GXSetTevColor(GX_TEVREG0, sp24);
|
|
GXSetTevColor(GX_TEVREG1, sp20);
|
|
GXSetNumTexGens(1);
|
|
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D);
|
|
GXSetNumTevStages(1);
|
|
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
|
|
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C1, GX_CC_C0, GX_CC_TEXC, GX_CC_ZERO);
|
|
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE,
|
|
GX_TEVPREV);
|
|
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_A0, GX_CA_TEXA, GX_CA_ZERO);
|
|
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE,
|
|
GX_TEVPREV);
|
|
|
|
if (strcmp(dComIfGp_getStartStageName(), "F_NW01") == 0 ||
|
|
g_env_light.field_0xea9 == 1)
|
|
{
|
|
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_ONE, GX_LO_COPY);
|
|
} else {
|
|
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA,
|
|
GX_LO_SET);
|
|
}
|
|
|
|
GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
|
|
|
|
if (i == 1) {
|
|
GXSetZMode(GX_TRUE, GX_GEQUAL, GX_FALSE);
|
|
} else {
|
|
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE);
|
|
}
|
|
|
|
GXSetClipMode(GX_CLIP_DISABLE);
|
|
GXSetNumIndStages(0);
|
|
dKr_cullVtx_Set();
|
|
|
|
rot += 1.2f;
|
|
MTXRotRad(sp18C, 'Z', DEG_TO_RAD(rot));
|
|
MTXConcat(sp1BC, sp18C, sp1BC);
|
|
|
|
GXLoadPosMtxImm(param_0, GX_PNMTX0);
|
|
GXSetCurrentMtx(0);
|
|
|
|
for (int j = 0; j < housi_p->field_0x5dec; j++) {
|
|
fopAc_ac_c* player_p = dComIfGp_getPlayer(0);
|
|
|
|
spD0.x =
|
|
housi_p->mHousiEff[j].mBasePos.x + housi_p->mHousiEff[j].mPosition.x;
|
|
spD0.y =
|
|
housi_p->mHousiEff[j].mBasePos.y + housi_p->mHousiEff[j].mPosition.y;
|
|
spD0.z =
|
|
housi_p->mHousiEff[j].mBasePos.z + housi_p->mHousiEff[j].mPosition.z;
|
|
|
|
if (i == 1 && j == 0) {
|
|
sp24.r = 0;
|
|
sp24.g = 0;
|
|
sp24.b = 0;
|
|
sp20.r = 0;
|
|
sp20.g = 0;
|
|
sp20.b = 0;
|
|
GXSetTevColor(GX_TEVREG1, sp20);
|
|
}
|
|
|
|
if (i == 1) {
|
|
f32 temp_f4 = 100.0f;
|
|
if (!(spD0.y > player_p->current.pos.y + temp_f4)) {
|
|
if (!(spD0.y < player_p->current.pos.y - 20.0f)) {
|
|
if (!(housi_p->mHousiEff[j].mAlpha <= 0.0f)) {
|
|
sp24.a =
|
|
housi_p->mHousiEff[j].mAlpha * 40.0f *
|
|
(1.0f - ((spD0.y - player_p->current.pos.y) / 100.0f));
|
|
spD0.y = player_p->current.pos.y - 20.0f;
|
|
goto block_14; // probably fake match
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
sp24.a = housi_p->mHousiEff[j].mAlpha * var_f25;
|
|
|
|
block_14:
|
|
GXLoadTexObj(&spDC, GX_TEXMAP0);
|
|
GXSetTevColor(GX_TEVREG0, sp24);
|
|
|
|
f32 var_f27 = housi_p->mHousiEff[j].field_0x48 * 9.0f;
|
|
if (g_env_light.field_0xea9 == 1) {
|
|
var_f27 = housi_p->mHousiEff[j].field_0x48 * 18.0f;
|
|
}
|
|
|
|
f32 temp_f28 =
|
|
(var_f27 * 0.2f) * cM_fsin(housi_p->mHousiEff[j].mScale.x * 5.0f);
|
|
f32 temp_f30 =
|
|
(var_f27 * 0.2f) * cM_fcos(housi_p->mHousiEff[j].mScale.y * 6.0f);
|
|
|
|
if (dKy_darkworld_check() == 1 || var_r28 == 1) {
|
|
cXyz sp7C[] = {
|
|
cXyz(-1.0f, -0.5f, 0.0f),
|
|
cXyz(-1.0f, 1.5f, 0.0f),
|
|
cXyz(1.0f, 1.5f, 0.0f),
|
|
cXyz(1.0f, -0.5f, 0.0f),
|
|
};
|
|
|
|
for (int k = 0; k < 4; k++) {
|
|
cXyz spAC;
|
|
cXyz spA0;
|
|
|
|
f32 temp_f26_2 =
|
|
cM_ssin((f32)j * 123.0f + (f32)(g_Counter.mCounter0 * 600));
|
|
|
|
cXyz* temp_r3 = &sp7C[k];
|
|
spAC.x = temp_r3->x * (8.0f * (1.0f + (temp_f26_2 * 0.3f)));
|
|
spAC.y = temp_r3->y * (8.0f * (1.0f + (temp_f26_2 * 0.3f)));
|
|
spAC.z = temp_r3->z * (8.0f * (1.0f + (temp_f26_2 * 0.3f)));
|
|
|
|
mDoMtx_stack_c::transS(spD0.x, spD0.y, spD0.z);
|
|
mDoMtx_stack_c::YrotM(temp_f26_2 * 65536.0f);
|
|
mDoMtx_stack_c::multVec(&spAC, &spA0);
|
|
sp15C[k] = spA0;
|
|
}
|
|
} else if (g_env_light.field_0xea9 == 2) {
|
|
cXyz sp4C[] = {
|
|
cXyz(-1.0f, -0.9f, 0.0f),
|
|
cXyz(-1.0f, 1.1f, 0.0f),
|
|
cXyz(1.0f, 1.1f, 0.0f),
|
|
cXyz(1.0f, -0.9f, 0.0f),
|
|
};
|
|
|
|
for (int k = 0; k < 4; k++) {
|
|
cXyz sp94;
|
|
cXyz sp88;
|
|
|
|
f32 var_f24;
|
|
if (housi_p->mHousiEff[j].mStatus == 1 ||
|
|
housi_p->mHousiEff[j].mStatus == 3)
|
|
{
|
|
var_f24 =
|
|
0.2f +
|
|
(housi_p->mHousiEff[j].field_0x34 *
|
|
(fabsf(cM_ssin((f32)j * 213.0f +
|
|
(f32)(g_Counter.mCounter0 * 330))) *
|
|
0.8f));
|
|
} else {
|
|
var_f24 = cM_ssin((f32)j * 123.0f +
|
|
(f32)(g_Counter.mCounter0 * 80));
|
|
}
|
|
|
|
f32 var_f2;
|
|
if (g_env_light.mPondSeason == 3) {
|
|
var_f2 = 15.0f;
|
|
|
|
if (housi_p->mHousiEff[j].mStatus == 1) {
|
|
var_f24 =
|
|
housi_p->mHousiEff[j].field_0x34 *
|
|
fabsf(cM_ssin((f32)j * 250.0f +
|
|
(f32)(g_Counter.mCounter0 * 88)));
|
|
} else {
|
|
var_f24 = cM_ssin((f32)j * 685.0f +
|
|
(f32)(g_Counter.mCounter0 * 20));
|
|
}
|
|
} else {
|
|
var_f2 = 6.0f;
|
|
}
|
|
|
|
cXyz* temp_r3_2 = &sp4C[k];
|
|
sp94.x = temp_r3_2->x * (var_f2 * (1.0f + (var_f24 * 0.3f)));
|
|
sp94.y = temp_r3_2->y * (var_f2 * (1.0f + (var_f24 * 0.3f)));
|
|
sp94.z = temp_r3_2->z * (var_f2 * (1.0f + (var_f24 * 0.3f)));
|
|
mDoMtx_stack_c::transS(spD0.x, spD0.y, spD0.z);
|
|
|
|
if (housi_p->mHousiEff[j].mStatus == 1 ||
|
|
housi_p->mHousiEff[j].mStatus == 3)
|
|
{
|
|
housi_p->mHousiEff[j].field_0x38 +=
|
|
483.0f * (0.5f + (var_f24 * 0.5f));
|
|
|
|
housi_p->mHousiEff[j].field_0x44 =
|
|
(s16)housi_p->mHousiEff[j].field_0x38;
|
|
mDoMtx_stack_c::YrotM(housi_p->mHousiEff[j].field_0x38);
|
|
mDoMtx_stack_c::XrotM(housi_p->mHousiEff[j].field_0x38);
|
|
mDoMtx_stack_c::ZrotM(housi_p->mHousiEff[j].field_0x38);
|
|
} else {
|
|
if (housi_p->mHousiEff[j].mStatus == 2) {
|
|
if (g_env_light.mPondSeason == 3) {
|
|
housi_p->mHousiEff[j].field_0x38 += var_f24 * 30.0f;
|
|
} else {
|
|
housi_p->mHousiEff[j].field_0x38 +=
|
|
var_f24 * 100.0f;
|
|
}
|
|
}
|
|
|
|
if (housi_p->mHousiEff[j].field_0x38 > 32765.0f) {
|
|
cLib_addCalc(&housi_p->mHousiEff[j].field_0x44,
|
|
-16384.0f, 0.1f, 500.0f, 0.0001f);
|
|
} else {
|
|
cLib_addCalc(&housi_p->mHousiEff[j].field_0x44,
|
|
16384.0f, 0.1f, 500.0f, 0.0001f);
|
|
}
|
|
|
|
mDoMtx_stack_c::YrotM(housi_p->mHousiEff[j].field_0x38);
|
|
mDoMtx_stack_c::XrotM(housi_p->mHousiEff[j].field_0x44);
|
|
mDoMtx_stack_c::ZrotM(housi_p->mHousiEff[j].field_0x38);
|
|
}
|
|
|
|
mDoMtx_stack_c::multVec(&sp94, &sp88);
|
|
sp15C[k] = sp88;
|
|
}
|
|
} else {
|
|
spC4.x = var_f27 - temp_f30;
|
|
spC4.y = var_f27 - temp_f28;
|
|
spC4.z = 0.0f;
|
|
MTXMultVec(sp1BC, &spC4, &spB8);
|
|
sp15C[0].x = spD0.x + spB8.x;
|
|
sp15C[0].y = spD0.y + spB8.y;
|
|
sp15C[0].z = spD0.z + spB8.z;
|
|
|
|
spC4.x = -var_f27 + temp_f30;
|
|
spC4.y = var_f27 - temp_f28;
|
|
spC4.z = 0.0f;
|
|
MTXMultVec(sp1BC, &spC4, &spB8);
|
|
sp15C[1].x = spD0.x + spB8.x;
|
|
sp15C[1].y = spD0.y + spB8.y;
|
|
sp15C[1].z = spD0.z + spB8.z;
|
|
|
|
spC4.x = -var_f27 + temp_f30;
|
|
spC4.y = -var_f27 + temp_f28;
|
|
spC4.z = 0.0f;
|
|
MTXMultVec(sp1BC, &spC4, &spB8);
|
|
sp15C[2].x = spD0.x + spB8.x;
|
|
sp15C[2].y = spD0.y + spB8.y;
|
|
sp15C[2].z = spD0.z + spB8.z;
|
|
|
|
spC4.x = var_f27 - temp_f30;
|
|
spC4.y = -var_f27 + temp_f28;
|
|
spC4.z = 0.0f;
|
|
MTXMultVec(sp1BC, &spC4, &spB8);
|
|
sp15C[3].x = spD0.x + spB8.x;
|
|
sp15C[3].y = spD0.y + spB8.y;
|
|
sp15C[3].z = spD0.z + spB8.z;
|
|
}
|
|
|
|
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
|
|
|
s16 var_r17 = 0x1FF;
|
|
if (dKy_darkworld_check() == 1 || var_r28 == 1) {
|
|
var_r17 = 0xFA;
|
|
}
|
|
|
|
GXPosition3f32(sp15C[0].x, sp15C[0].y, sp15C[0].z);
|
|
GXTexCoord2s16(0, 0);
|
|
GXPosition3f32(sp15C[1].x, sp15C[1].y, sp15C[1].z);
|
|
GXTexCoord2s16(var_r17, 0);
|
|
GXPosition3f32(sp15C[2].x, sp15C[2].y, sp15C[2].z);
|
|
GXTexCoord2s16(var_r17, var_r17);
|
|
GXPosition3f32(sp15C[3].x, sp15C[3].y, sp15C[3].z);
|
|
GXTexCoord2s16(0, var_r17);
|
|
GXEnd();
|
|
}
|
|
}
|
|
}
|
|
|
|
GXSetClipMode(GX_CLIP_ENABLE);
|
|
J3DShape::resetVcdVatCache();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 8037A578-8037A578 006BD8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_8037A5F9 = "D_MN11";
|
|
#pragma pop
|
|
|
|
/* 804249B0-804249BC 0516D0 000C+00 0/1 0/0 0/0 .bss @8942 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_8942[12];
|
|
#pragma pop
|
|
|
|
/* 804249BC-804249C8 0516DC 000C+00 0/1 0/0 0/0 .bss @8945 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_8945[12];
|
|
#pragma pop
|
|
|
|
/* 804249C8-804249D4 0516E8 000C+00 0/1 0/0 0/0 .bss @8946 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_8946[12];
|
|
#pragma pop
|
|
|
|
/* 804249D4-804249E0 0516F4 000C+00 0/1 0/0 0/0 .bss @8947 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_8947[12];
|
|
#pragma pop
|
|
|
|
/* 804249E0-80424A10 051700 0030+00 0/1 0/0 0/0 .bss add_table$8941 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 add_table_8941[48];
|
|
#pragma pop
|
|
|
|
/* 80450F08-80450F0C 000408 0004+00 1/1 0/0 0/0 .sbss rot$8936 */
|
|
static f32 rot_8936;
|
|
|
|
/* 80450F0C-80450F10 -00001 0004+00 1/1 0/0 0/0 .sbss None */
|
|
/* 80450F0C 0001+00 data_80450F0C None */
|
|
/* 80450F0D 0003+00 data_80450F0D None */
|
|
static u8 struct_80450F0C[4];
|
|
|
|
/* 80450F10-80450F14 000410 0004+00 1/1 0/0 0/0 .sbss S_fubuki_ratio$8948 */
|
|
static f32 S_fubuki_ratio;
|
|
|
|
/* 80450F14-80450F18 000414 0004+00 1/1 0/0 0/0 .sbss None */
|
|
static u8 data_80450F14[4];
|
|
|
|
/* 80452500-80452504 000B00 0004+00 1/1 0/0 0/0 .sdata2 @8939 */
|
|
SECTION_SDATA2 static u32 lit_8939 = 0xFFFFFFFF;
|
|
|
|
/* 80452504-80452508 000B04 0004+00 1/1 0/0 0/0 .sdata2 @8940 */
|
|
SECTION_SDATA2 static u32 lit_8940 = 0xFFFFFFFF;
|
|
|
|
/* 80452508-8045250C 000B08 0004+00 1/1 0/0 0/0 .sdata2 @9384 */
|
|
SECTION_SDATA2 static f32 lit_9384 = -20.0f;
|
|
|
|
/* 8045250C-80452510 000B0C 0004+00 1/1 0/0 0/0 .sdata2 @9385 */
|
|
SECTION_SDATA2 static f32 lit_9385 = 178.5f;
|
|
|
|
/* 80452510-80452514 000B10 0004+00 1/1 0/0 0/0 .sdata2 @9386 */
|
|
SECTION_SDATA2 static f32 lit_9386 = 127.5f;
|
|
|
|
/* 80452514-80452518 000B14 0004+00 3/3 0/0 0/0 .sdata2 @9387 */
|
|
SECTION_SDATA2 static f32 lit_9387 = 719.0f;
|
|
|
|
/* 80452518-8045251C 000B18 0004+00 1/1 0/0 0/0 .sdata2 @9388 */
|
|
SECTION_SDATA2 static f32 lit_9388 = 220.0f;
|
|
|
|
/* 8045251C-80452520 000B1C 0004+00 1/1 0/0 0/0 .sdata2 @9389 */
|
|
SECTION_SDATA2 static f32 lit_9389 = 2079.0f;
|
|
|
|
/* 80452520-80452524 000B20 0004+00 1/1 0/0 0/0 .sdata2 @9390 */
|
|
SECTION_SDATA2 static f32 lit_9390 = 3013.0f;
|
|
|
|
/* 80452524-80452528 000B24 0004+00 1/1 0/0 0/0 .sdata2 @9391 */
|
|
SECTION_SDATA2 static f32 lit_9391 = 864.0f;
|
|
|
|
/* 80452528-8045252C 000B28 0004+00 1/1 0/0 0/0 .sdata2 @9392 */
|
|
SECTION_SDATA2 static f32 lit_9392 = -6000.0f;
|
|
|
|
/* 8045252C-80452530 000B2C 0004+00 1/1 0/0 0/0 .sdata2 @9393 */
|
|
SECTION_SDATA2 static f32 lit_9393 = -4145.0f;
|
|
|
|
/* 80452530-80452534 000B30 0004+00 1/1 0/0 0/0 .sdata2 @9394 */
|
|
SECTION_SDATA2 static f32 lit_9394 = -2960.0f;
|
|
|
|
/* 80452534-80452538 000B34 0004+00 1/1 0/0 0/0 .sdata2 @9395 */
|
|
SECTION_SDATA2 static f32 lit_9395 = -880.0f;
|
|
|
|
/* 80452538-8045253C 000B38 0004+00 1/1 0/0 0/0 .sdata2 @9396 */
|
|
SECTION_SDATA2 static f32 lit_9396 = -4920.0f;
|
|
|
|
/* 8045253C-80452540 000B3C 0004+00 1/1 0/0 0/0 .sdata2 @9397 */
|
|
SECTION_SDATA2 static f32 lit_9397 = -2000.0f;
|
|
|
|
/* 80452540-80452544 000B40 0004+00 1/1 0/0 0/0 .sdata2 @9398 */
|
|
SECTION_SDATA2 static f32 lit_9398 = 4.0f;
|
|
|
|
/* 80452544-80452548 000B44 0004+00 1/1 0/0 0/0 .sdata2 @9399 */
|
|
SECTION_SDATA2 static f32 lit_9399 = 14.0f;
|
|
|
|
/* 80452548-8045254C 000B48 0004+00 1/1 0/0 0/0 .sdata2 @9400 */
|
|
SECTION_SDATA2 static f32 lit_9400 = -24.0f;
|
|
|
|
/* 8045254C-80452550 000B4C 0004+00 1/1 0/0 0/0 .sdata2 @9401 */
|
|
SECTION_SDATA2 static f32 lit_9401 = 952.0f;
|
|
|
|
/* 80452550-80452554 000B50 0004+00 1/1 0/0 0/0 .sdata2 @9402 */
|
|
SECTION_SDATA2 static f32 lit_9402 = -52.0f;
|
|
|
|
/* 80067488-800685DC 061DC8 1154+00 0/0 1/1 0/0 .text dKyr_drawSnow__FPA4_fPPUc */
|
|
void dKyr_drawSnow(Mtx param_0, u8** param_1) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 8037A568-8037A578 006BC8 0010+00 1/1 0/0 0/0 .rodata star_col$9440 */
|
|
SECTION_RODATA static u8 const star_col[16] = {
|
|
0xFF, 0xBE, 0xC8, 0xA0, 0xC8, 0xFF, 0xBE, 0x78, 0xC8, 0xBE, 0xFF, 0x50, 0xFF, 0xFF, 0xFF, 0xC8,
|
|
};
|
|
COMPILER_STRIP_GATE(0x8037A568, &star_col);
|
|
|
|
/* 80424A10-80424A1C 051730 000C+00 0/1 0/0 0/0 .bss @9425 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9425[12];
|
|
#pragma pop
|
|
|
|
/* 80424A1C-80424A28 05173C 000C+00 0/1 0/0 0/0 .bss @9428 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9428[12];
|
|
#pragma pop
|
|
|
|
/* 80424A28-80424A34 051748 000C+00 0/1 0/0 0/0 .bss @9429 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9429[12];
|
|
#pragma pop
|
|
|
|
/* 80424A34-80424A40 051754 000C+00 0/1 0/0 0/0 .bss @9430 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9430[12];
|
|
#pragma pop
|
|
|
|
/* 80424A40-80424A4C 051760 000C+00 0/1 0/0 0/0 .bss @9431 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9431[12];
|
|
#pragma pop
|
|
|
|
/* 80424A4C-80424A58 05176C 000C+00 0/1 0/0 0/0 .bss @9432 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9432[12];
|
|
#pragma pop
|
|
|
|
/* 80424A58-80424A64 051778 000C+00 0/1 0/0 0/0 .bss @9433 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9433[12];
|
|
#pragma pop
|
|
|
|
/* 80424A64-80424A70 051784 000C+00 0/1 0/0 0/0 .bss @9434 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9434[12];
|
|
#pragma pop
|
|
|
|
/* 80424A70-80424A7C 051790 000C+00 0/1 0/0 0/0 .bss @9435 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9435[12];
|
|
#pragma pop
|
|
|
|
/* 80424A7C-80424A88 05179C 000C+00 0/1 0/0 0/0 .bss @9436 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9436[12];
|
|
#pragma pop
|
|
|
|
/* 80424A88-80424A94 0517A8 000C+00 0/1 0/0 0/0 .bss @9437 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9437[12];
|
|
#pragma pop
|
|
|
|
/* 80424A94-80424AA0 0517B4 000C+00 0/1 0/0 0/0 .bss @9438 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9438[12];
|
|
#pragma pop
|
|
|
|
/* 80424AA0-80424AAC 0517C0 000C+00 0/1 0/0 0/0 .bss @9439 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 lit_9439[12];
|
|
#pragma pop
|
|
|
|
/* 80424AAC-80424B00 0517CC 004E+06 0/1 0/0 0/0 .bss hokuto_position$9424 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
static u8 hokuto_position[78 + 6 /* padding */];
|
|
#pragma pop
|
|
|
|
/* 80450F18-80450F1C 000418 0004+00 1/1 0/0 0/0 .sbss rot$9421 */
|
|
static f32 rot_9421;
|
|
|
|
/* 80450F1C-80450F20 -00001 0004+00 1/1 0/0 0/0 .sbss None */
|
|
/* 80450F1C 0001+00 data_80450F1C None */
|
|
/* 80450F1D 0003+00 data_80450F1D None */
|
|
static u8 struct_80450F1C[4];
|
|
|
|
/* 80452554-80452558 000B54 0004+00 2/2 0/0 0/0 .sdata2 @9833 */
|
|
SECTION_SDATA2 static f32 lit_9833 = 0.65f;
|
|
|
|
/* 80452558-8045255C 000B58 0004+00 1/1 0/0 0/0 .sdata2 @9834 */
|
|
SECTION_SDATA2 static f32 lit_9834 = 0.28f;
|
|
|
|
/* 8045255C-80452560 000B5C 0004+00 1/1 0/0 0/0 .sdata2 @9835 */
|
|
SECTION_SDATA2 static f32 lit_9835 = 540.0f;
|
|
|
|
/* 80452560-80452564 000B60 0004+00 1/1 0/0 0/0 .sdata2 @9836 */
|
|
SECTION_SDATA2 static f32 lit_9836 = 0.03125f;
|
|
|
|
/* 80452564-80452568 000B64 0004+00 1/1 0/0 0/0 .sdata2 @9837 */
|
|
SECTION_SDATA2 static f32 lit_9837 = 0.004950494971126318f;
|
|
|
|
/* 800685DC-8006950C 062F1C 0F30+00 0/0 1/1 0/0 .text dKyr_drawStar__FPA4_fPPUc */
|
|
void dKyr_drawStar(Mtx param_0, u8** param_1) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80450F20-80450F24 000420 0004+00 1/1 0/0 0/0 .sbss rot$9847 */
|
|
static f32 rot_9847;
|
|
|
|
/* 80450F24-80450F28 000424 0004+00 1/1 0/0 0/0 .sbss None */
|
|
static u8 data_80450F24[4];
|
|
|
|
/* 80452568-8045256C 000B68 0004+00 1/1 0/0 0/0 .sdata2 @9850 */
|
|
SECTION_SDATA2 static u32 lit_9850 = 0xFFFFFFFF;
|
|
|
|
/* 8045256C-80452570 000B6C 0004+00 1/1 0/0 0/0 .sdata2 @9851 */
|
|
SECTION_SDATA2 static u32 lit_9851 = 0xFFFFFFFF;
|
|
|
|
/* 80452570-80452574 000B70 0004+00 1/1 0/0 0/0 .sdata2 @9852 */
|
|
SECTION_SDATA2 static u32 lit_9852 = 0xFFFFFFFF;
|
|
|
|
/* 80452574-80452578 000B74 0004+00 2/2 0/0 0/0 .sdata2 @10030 */
|
|
SECTION_SDATA2 static f32 lit_10030 = 0.55f;
|
|
|
|
/* 80452578-8045257C 000B78 0004+00 2/2 0/0 0/0 .sdata2 @10031 */
|
|
SECTION_SDATA2 static f32 lit_10031 = 0.49f;
|
|
|
|
/* 8006950C-8006A090 063E4C 0B84+00 0/0 1/1 0/0 .text drawCloudShadow__FPA4_fPPUc */
|
|
void drawCloudShadow(Mtx param_0, u8** param_1) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 8037A578-8037A578 006BD8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_8037A600 = "D_MN07";
|
|
#pragma pop
|
|
|
|
/* 80450F28-80450F2C 000428 0004+00 1/1 0/0 0/0 .sbss howa_loop_cnt$10108 */
|
|
static f32 howa_loop_cnt;
|
|
|
|
/* 80450F2C-80450F30 00042C 0004+00 1/1 0/0 0/0 .sbss None */
|
|
static u8 data_80450F2C[4];
|
|
|
|
/* 8045257C-80452580 000B7C 0004+00 1/1 0/0 0/0 .sdata2 @10593 */
|
|
SECTION_SDATA2 static f32 lit_10593 = 240.0f;
|
|
|
|
/* 80452580-80452584 000B80 0004+00 1/1 0/0 0/0 .sdata2 @10594 */
|
|
SECTION_SDATA2 static f32 lit_10594 = 0.0000000001;
|
|
|
|
/* 80452584-80452588 000B84 0004+00 1/1 0/0 0/0 .sdata2 @10595 */
|
|
SECTION_SDATA2 static f32 lit_10595 = 0.0625f;
|
|
|
|
/* 80452588-8045258C 000B88 0004+00 1/1 0/0 0/0 .sdata2 @10596 */
|
|
SECTION_SDATA2 static f32 lit_10596 = 0.84f;
|
|
|
|
/* 8045258C-80452590 000B8C 0004+00 1/1 0/0 0/0 .sdata2 @10597 */
|
|
SECTION_SDATA2 static f32 lit_10597 = 0.92f;
|
|
|
|
/* 80452590-80452594 000B90 0004+00 1/1 0/0 0/0 .sdata2 @10598 */
|
|
SECTION_SDATA2 static f32 lit_10598 = 1.9f;
|
|
|
|
/* 80452594-80452598 000B94 0004+00 1/1 0/0 0/0 .sdata2 @10599 */
|
|
SECTION_SDATA2 static f32 lit_10599 = 16.0f;
|
|
|
|
/* 80452598-8045259C 000B98 0004+00 2/2 0/0 0/0 .sdata2 @10600 */
|
|
SECTION_SDATA2 static f32 lit_10600 = 0.9f;
|
|
|
|
/* 8045259C-804525A0 000B9C 0004+00 1/1 0/0 0/0 .sdata2 @10601 */
|
|
SECTION_SDATA2 static f32 lit_10601 = -4.0f;
|
|
|
|
/* 804525A0-804525A4 000BA0 0004+00 1/1 0/0 0/0 .sdata2 @10602 */
|
|
SECTION_SDATA2 static f32 lit_10602 = 1.21f;
|
|
|
|
/* 804525A4-804525A8 000BA4 0004+00 1/1 0/0 0/0 .sdata2 @10603 */
|
|
SECTION_SDATA2 static f32 lit_10603 = 708.0f;
|
|
|
|
/* 804525A8-804525AC 000BA8 0004+00 1/1 0/0 0/0 .sdata2 @10604 */
|
|
SECTION_SDATA2 static f32 lit_10604 = 558.0f;
|
|
|
|
/* 8006A090-8006B190 0649D0 1100+00 0/0 1/1 0/0 .text drawVrkumo__FPA4_fR8_GXColorPPUc */
|
|
void drawVrkumo(Mtx param_0, _GXColor& param_1, u8** param_2) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* 8006B190-8006B1A8 065AD0 0018+00 0/0 1/1 0/0 .text dKyr_thunder_init__Fv */
|
|
void dKyr_thunder_init() {
|
|
g_env_light.mThunderEff.mStateTimer = 0;
|
|
g_env_light.mThunderEff.field_0x2 = 0;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 8037A578-8037A578 006BD8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_8037A607 = "R_SP";
|
|
#pragma pop
|
|
|
|
/* 804525AC-804525B0 000BAC 0004+00 1/1 0/0 0/0 .sdata2 @10732 */
|
|
SECTION_SDATA2 static f32 lit_10732 = 90000.0f;
|
|
|
|
/* 804525B0-804525B4 000BB0 0004+00 1/1 0/0 0/0 .sdata2 @10733 */
|
|
SECTION_SDATA2 static f32 lit_10733 = 0.007000000216066837f;
|
|
|
|
/* 804525B4-804525B8 000BB4 0004+00 1/1 0/0 0/0 .sdata2 @10734 */
|
|
SECTION_SDATA2 static f32 lit_10734 = 195520.0f;
|
|
|
|
/* 804525B8-804525BC 000BB8 0004+00 1/1 0/0 0/0 .sdata2 @10735 */
|
|
SECTION_SDATA2 static f32 lit_10735 = 4818.0f;
|
|
|
|
/* 804525BC-804525C0 000BBC 0004+00 1/1 0/0 0/0 .sdata2 @10736 */
|
|
SECTION_SDATA2 static f32 lit_10736 = 1385.0f;
|
|
|
|
/* 804525C0-804525C4 000BC0 0004+00 1/1 0/0 0/0 .sdata2 @10737 */
|
|
SECTION_SDATA2 static f32 lit_10737 = 75.0f;
|
|
|
|
/* 804525C4-804525C8 000BC4 0004+00 1/1 0/0 0/0 .sdata2 @10738 */
|
|
SECTION_SDATA2 static f32 lit_10738 = -48.0f;
|
|
|
|
/* 804525C8-804525CC 000BC8 0004+00 1/1 0/0 0/0 .sdata2 @10739 */
|
|
SECTION_SDATA2 static f32 lit_10739 = 3.0f / 20.0f;
|
|
|
|
/* 8006B1A8-8006B8DC 065AE8 0734+00 0/0 1/1 0/0 .text dKyr_thunder_move__Fv */
|
|
void dKyr_thunder_move() {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* 8006B8DC-8006B8E0 06621C 0004+00 0/0 1/1 0/0 .text dKyr_shstar_init__Fv */
|
|
void dKyr_shstar_init() {}
|
|
|
|
/* 8006B8E0-8006B8E4 066220 0004+00 0/0 1/1 0/0 .text dKyr_shstar_move__Fv */
|
|
void dKyr_shstar_move() {}
|
|
|
|
/* 8006B8E4-8006B924 066224 0040+00 0/0 1/1 0/0 .text dKyr_odour_init__Fv */
|
|
void dKyr_odour_init() {
|
|
dScnKy_env_light_c* env_light = dKy_getEnvlight();
|
|
dKankyo_odour_Packet* odour_p = env_light->mpOdourPacket;
|
|
|
|
for (int i = 0; i < 2000; i++) {
|
|
odour_p->mOdourEff[i].mStatus = 0;
|
|
odour_p->mOdourEff[i].field_0x28 = 0.0f;
|
|
odour_p->mOdourEff[i].field_0x2c = 0.0f;
|
|
odour_p->mOdourEff[i].field_0x24 = 0.0f;
|
|
}
|
|
}
|
|
|
|
|
|
/* ############################################################################################## */
|
|
/* 804525CC-804525D0 000BCC 0004+00 1/1 0/0 0/0 .sdata2 @10872 */
|
|
SECTION_SDATA2 static f32 lit_10872 = 78.0f;
|
|
|
|
/* 804525D0-804525D4 000BD0 0004+00 1/1 0/0 0/0 .sdata2 @10873 */
|
|
SECTION_SDATA2 static f32 lit_10873 = 3.0f / 50.0f;
|
|
|
|
/* 8006B924-8006BE0C 066264 04E8+00 0/0 1/1 0/0 .text dKyr_odour_move__Fv */
|
|
void dKyr_odour_move() {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80450F30-80450F34 000430 0004+00 1/1 0/0 0/0 .sbss rot$10882 */
|
|
static f32 rot_10882;
|
|
|
|
/* 80450F34-80450F38 000434 0004+00 1/1 0/0 0/0 .sbss None */
|
|
static u8 data_80450F34[4];
|
|
|
|
/* 8006BE0C-8006C790 06674C 0984+00 0/0 1/1 0/0 .text dKyr_odour_draw__FPA4_fPPUc */
|
|
void dKyr_odour_draw(Mtx param_0, u8** param_1) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* 8006C790-8006C85C 0670D0 00CC+00 0/0 1/1 0/0 .text dKyr_mud_init__Fv */
|
|
void dKyr_mud_init() {
|
|
dScnKy_env_light_c* light = dKy_getEnvlight();
|
|
light->mpMudPacket->mpMoyaRes = (u8*)dComIfG_getObjectRes("Always", 0x53);
|
|
|
|
for (int i = 0; i < 100; i++) {
|
|
light->mpMudPacket->mEffect[i].mStatus = 0;
|
|
}
|
|
|
|
light->mpMudPacket->mEffectNum = 0;
|
|
|
|
if (!dComIfGs_isStageBossEnemy()) {
|
|
light->mpMudPacket->field_0x1c3c = 1.0f;
|
|
} else {
|
|
light->mpMudPacket->field_0x1c3c = 0.0f;
|
|
}
|
|
}
|
|
|
|
|
|
/* ############################################################################################## */
|
|
/* 804525D4-804525D8 000BD4 0004+00 1/1 0/0 0/0 .sdata2 @11302 */
|
|
SECTION_SDATA2 static f32 lit_11302 = 770.0f;
|
|
|
|
/* 8006C85C-8006D01C 06719C 07C0+00 0/0 1/1 0/0 .text dKyr_mud_move__Fv */
|
|
void dKyr_mud_move() {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80450F38-80450F3C 000438 0004+00 1/1 0/0 0/0 .sbss rot$11307 */
|
|
static f32 rot_11307;
|
|
|
|
/* 80450F3C-80450F40 00043C 0004+00 1/1 0/0 0/0 .sbss None */
|
|
static u8 data_80450F3C[4];
|
|
|
|
/* 804525D8-804525DC 000BD8 0004+00 1/1 0/0 0/0 .sdata2 @11508 */
|
|
SECTION_SDATA2 static f32 lit_11508 = 13.0f / 10.0f;
|
|
|
|
/* 804525DC-804525E0 000BDC 0004+00 1/1 0/0 0/0 .sdata2 @11509 */
|
|
SECTION_SDATA2 static f32 lit_11509 = 12.0f;
|
|
|
|
/* 8006D01C-8006D914 06795C 08F8+00 0/0 1/1 0/0 .text dKyr_mud_draw__FPA4_fPPUc */
|
|
void dKyr_mud_draw(Mtx param_0, u8** param_1) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* 8006D914-8006DA04 068254 00F0+00 0/0 1/1 1/1 .text dKyr_evil_init__Fv */
|
|
void dKyr_evil_init() {
|
|
if (g_env_light.mpEvilPacket != NULL) {
|
|
g_env_light.mpEvilPacket->mpMoyaRes = (u8*)dComIfG_getObjectRes("Always", 0x53);
|
|
g_env_light.mpEvilPacket->mpKumoLightRes = (u8*)dComIfG_getStageRes("F_kumolight_01.bti");
|
|
|
|
if (g_env_light.mpEvilPacket->mpKumoLightRes == NULL) {
|
|
g_env_light.mpEvilPacket->mpKumoLightRes = (u8*)dComIfG_getObjectRes("Always", 0x53);
|
|
}
|
|
|
|
for (int i = 0; i < 2000; i++) {
|
|
g_env_light.mpEvilPacket->mEffect[i].mStatus = 0;
|
|
}
|
|
|
|
g_env_light.mpEvilPacket->mEffectNum = 0;
|
|
}
|
|
}
|
|
|
|
/* 8006DA04-8006DA7C 068344 0078+00 0/0 1/1 0/0 .text dKyr_evil_move__Fv */
|
|
void dKyr_evil_move() {
|
|
dKankyo_evil_Packet* evil_p = g_env_light.mpEvilPacket;
|
|
cXyz vec = dKyw_get_wind_vecpow();
|
|
|
|
dBgS_GndChk gndchk;
|
|
for (int i = 0; i < evil_p->mEffectNum; i++) {
|
|
}
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80450F40-80450F44 000440 0004+00 1/1 0/0 0/0 .sbss rot$11586 */
|
|
static f32 rot_11586;
|
|
|
|
/* 80450F44-80450F48 000444 0004+00 1/1 0/0 0/0 .sbss None */
|
|
static u8 data_80450F44[4];
|
|
|
|
/* 804525E0-804525E4 000BE0 0004+00 1/1 0/0 0/0 .sdata2 @11882 */
|
|
SECTION_SDATA2 static f32 lit_11882 = -5000.0f;
|
|
|
|
/* 804525E4-804525E8 000BE4 0004+00 2/2 0/0 0/0 .sdata2 @11883 */
|
|
SECTION_SDATA2 static f32 lit_11883 = 9000.0f;
|
|
|
|
/* 804525E8-804525EC 000BE8 0004+00 2/2 0/0 0/0 .sdata2 @11884 */
|
|
SECTION_SDATA2 static f32 lit_11884 = 688.0f;
|
|
|
|
/* 804525EC-804525F0 000BEC 0004+00 2/2 0/0 0/0 .sdata2 @11885 */
|
|
SECTION_SDATA2 static f32 lit_11885 = 538.0f;
|
|
|
|
/* 804525F0-804525F4 000BF0 0004+00 1/1 0/0 0/0 .sdata2 @11886 */
|
|
SECTION_SDATA2 static f32 lit_11886 = 159.0f;
|
|
|
|
/* 804525F4-804525F8 000BF4 0004+00 1/1 0/0 0/0 .sdata2 @11887 */
|
|
SECTION_SDATA2 static f32 lit_11887 = 135.0f;
|
|
|
|
/* 8006DA7C-8006E448 0683BC 09CC+00 1/1 0/0 0/0 .text dKyr_evil_draw2__FPA4_fPPUc */
|
|
static void dKyr_evil_draw2(Mtx param_0, u8** param_1) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* 8006E448-8006E6B0 068D88 0268+00 1/1 0/0 0/0 .text dKyr_near_bosslight_check__F4cXyz
|
|
*/
|
|
static f32 dKyr_near_bosslight_check(cXyz param_0) {
|
|
f32 dist = 10000000.0f;
|
|
dScnKy_env_light_c* env_light = dKy_getEnvlight();
|
|
|
|
for (int i = 0; i < 6; i++) {
|
|
if (env_light->field_0x0c18[i].field_0x26 == 1) {
|
|
if (env_light->field_0x0c18[i].mPos.abs(param_0) < dist) {
|
|
dist = env_light->field_0x0c18[i].mPos.abs(param_0);
|
|
}
|
|
}
|
|
}
|
|
|
|
return dist;
|
|
}
|
|
|
|
|
|
/* ############################################################################################## */
|
|
/* 80450F48-80450F4C 000448 0004+00 1/1 0/0 0/0 .sbss rot$11958 */
|
|
static f32 rot_11958;
|
|
|
|
/* 80450F4C-80450F50 00044C 0004+00 1/1 0/0 0/0 .sbss None */
|
|
static u8 data_80450F4C[4];
|
|
|
|
/* 804525FC-80452600 000BFC 0004+00 1/1 0/0 0/0 .sdata2 @12252 */
|
|
SECTION_SDATA2 static f32 lit_12252 = 69.0f;
|
|
|
|
/* 80452600-80452604 000C00 0004+00 1/1 0/0 0/0 .sdata2 @12253 */
|
|
SECTION_SDATA2 static f32 lit_12253 = 137.0f;
|
|
|
|
/* 80452604-80452608 000C04 0004+00 1/1 0/0 0/0 .sdata2 @12254 */
|
|
SECTION_SDATA2 static f32 lit_12254 = 750.0f;
|
|
|
|
/* 80452608-8045260C 000C08 0004+00 1/1 0/0 0/0 .sdata2 @12255 */
|
|
SECTION_SDATA2 static f32 lit_12255 = 9.0f / 5.0f;
|
|
|
|
/* 8045260C-80452610 000C0C 0004+00 1/1 0/0 0/0 .sdata2 @12256 */
|
|
SECTION_SDATA2 static f32 lit_12256 = 165.0f;
|
|
|
|
/* 80452610-80452614 000C10 0004+00 1/1 0/0 0/0 .sdata2 @12257 */
|
|
SECTION_SDATA2 static f32 lit_12257 = 155.0f;
|
|
|
|
/* 80452614-80452618 000C14 0004+00 1/1 0/0 0/0 .sdata2 @12258 */
|
|
SECTION_SDATA2 static f32 lit_12258 = -3000.0f;
|
|
|
|
/* 80452618-8045261C 000C18 0004+00 1/1 0/0 0/0 .sdata2 @12259 */
|
|
SECTION_SDATA2 static f32 lit_12259 = 127.0f;
|
|
|
|
/* 8045261C-80452620 000C1C 0004+00 1/1 0/0 0/0 .sdata2 @12260 */
|
|
SECTION_SDATA2 static f32 lit_12260 = 115.0f;
|
|
|
|
/* 8006E6B0-8006F160 068FF0 0AB0+00 0/0 1/1 0/0 .text dKyr_evil_draw__FPA4_fPPUc */
|
|
void dKyr_evil_draw(Mtx param_0, u8** param_1) {
|
|
// NONMATCHING
|
|
}
|
|
|
|
/* 8006F160-8006F168 069AA0 0008+00 0/0 1/0 0/0 .text getKandelaarFlamePos__9daPy_py_cFv
|
|
*/
|
|
cXyz* daPy_py_c::getKandelaarFlamePos() {
|
|
return NULL;
|
|
}
|