1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-03 06:24:30 +00:00

Environment documentation pass (#1115)

* some docs, start introducing time macro

* most usages of CLOCK_TIME

* finish up clock time defines, format

* saving incase i need to revert

* more docs

* more docs progress

* some more docs

* format with 11

* change sos to storm

* update functions.h

* some depth stuff

* review 1 and 2

* whoops

* update zbuf stuff

* most of review 3

* enum name

* storm state enum

* review 4

* fix enum

* add comment to skyboxischanging

* review

* things dont match, committing so i can change branches

* revert struct changes

* define for override_full_control

* new clock_time macro

* fill alpha -> glare strength

* update comment

* remove indoor/outdoor, new name for underwater light variable

* remove copy pasted comment

* fix comments

* remove whitespave

* review
This commit is contained in:
fig02 2022-05-20 14:40:13 -04:00 committed by GitHub
parent d7bbe43ba7
commit 4f0018bf36
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
50 changed files with 1339 additions and 1087 deletions

View file

@ -289,7 +289,7 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, GlobalContext* globalCtx) {
return;
}
globalCtx->envCtx.unk_BF = 2;
globalCtx->envCtx.lightSettingOverride = 2;
if (globalCtx->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
OnePointCutscene_Init(globalCtx, 8603, -99, NULL, CAM_ID_MAIN);
@ -549,7 +549,7 @@ void BgDyYoseizo_Vanish(BgDyYoseizo* this, GlobalContext* globalCtx) {
if (this->vanishTimer == 0) {
func_8002DF54(globalCtx, &this->actor, 7);
globalCtx->envCtx.unk_BF = 0;
globalCtx->envCtx.lightSettingOverride = 0;
findOcarinaSpot = globalCtx->actorCtx.actorLists[ACTORCAT_PROP].head;
while (findOcarinaSpot != NULL) {

View file

@ -232,7 +232,7 @@ void BgMoriBigst_Update(Actor* thisx, GlobalContext* globalCtx) {
this->waitTimer--;
}
if (func_80043590(&this->dyna)) {
func_80074CE8(globalCtx, 6);
Environment_ChangeLightSetting(globalCtx, 6);
}
if (this->actionFunc != NULL) {
this->actionFunc(this, globalCtx);

View file

@ -102,7 +102,7 @@ void BgPoSyokudai_Init(Actor* thisx, GlobalContext* globalCtx) {
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_PO_SISTERS, 119.0f, 225.0f, -1566.0f, 0, 0, 0,
thisx->params);
globalCtx->envCtx.unk_BF = 0x4;
globalCtx->envCtx.lightSettingOverride = 4;
} else if (!Flags_GetSwitch(globalCtx, POE_TORCH_FLAG + POE_FLAME_PURPLE) && !Flags_GetSwitch(globalCtx, 0x1B)) {
@ -111,8 +111,8 @@ void BgPoSyokudai_Init(Actor* thisx, GlobalContext* globalCtx) {
(this->flameColor << 8) + thisx->params + 0x1000);
} else if (!Flags_GetSwitch(globalCtx, thisx->params)) {
if (globalCtx->envCtx.unk_BF == 0xFF) {
globalCtx->envCtx.unk_BF = 4;
if (globalCtx->envCtx.lightSettingOverride == LIGHT_SETTING_OVERRIDE_NONE) {
globalCtx->envCtx.lightSettingOverride = 4;
}
}
@ -125,8 +125,8 @@ void BgPoSyokudai_Destroy(Actor* thisx, GlobalContext* globalCtx) {
LightContext_RemoveLight(globalCtx, &globalCtx->lightCtx, this->lightNode);
Collider_DestroyCylinder(globalCtx, &this->collider);
if (globalCtx->envCtx.unk_BF != 0xFF) {
globalCtx->envCtx.unk_BF = 0xFF;
if (globalCtx->envCtx.lightSettingOverride != LIGHT_SETTING_OVERRIDE_NONE) {
globalCtx->envCtx.lightSettingOverride = LIGHT_SETTING_OVERRIDE_NONE;
}
}

View file

@ -226,7 +226,7 @@ void BgSpot00Hanebasi_Update(Actor* thisx, GlobalContext* globalCtx) {
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
globalCtx->transitionType = TRANS_TYPE_FADE_BLACK_FAST;
} else if (Actor_IsFacingAndNearPlayer(&this->dyna.actor, 3000.0f, 0x7530)) {
globalCtx->envCtx.gloomySkyMode = 1;
globalCtx->envCtx.stormRequest = STORM_REQUEST_START;
}
}
}
@ -235,20 +235,20 @@ void BgSpot00Hanebasi_Update(Actor* thisx, GlobalContext* globalCtx) {
u16 dayTime;
s32 tmp;
if (gTimeIncrement == 50) {
tmp = 0xD556;
if (gTimeSpeed == 50) {
tmp = CLOCK_TIME(20, 0) + 1;
if (gSaveContext.dayTime >= 0xD557) {
tmp = 0x1D556;
if (gSaveContext.dayTime > CLOCK_TIME(20, 0) + 1) {
tmp = CLOCK_TIME(20, 0) + 1 + 0x10000;
}
gTimeIncrement = (tmp - gSaveContext.dayTime) * (1.0f / 350.0f);
gTimeSpeed = (tmp - gSaveContext.dayTime) * (1.0f / 350.0f);
}
dayTime = gSaveContext.dayTime;
if ((dayTime >= 0x2AAC) && (dayTime < 0x3000) && (gSaveContext.sceneSetupIndex == 5)) {
gTimeIncrement = 0;
if ((dayTime > CLOCK_TIME(4, 0)) && (dayTime < CLOCK_TIME(4, 30)) && (gSaveContext.sceneSetupIndex == 5)) {
gTimeSpeed = 0;
}
}
}

View file

@ -769,7 +769,7 @@ void BossFd_Fly(BossFd* this, GlobalContext* globalCtx) {
s16 sp150;
if (this->fogMode == 0) {
globalCtx->envCtx.unk_D8 = 0;
globalCtx->envCtx.lightBlend = 0;
}
this->fogMode = 0xA;
@ -1081,36 +1081,36 @@ void BossFd_Effects(BossFd* this, GlobalContext* globalCtx) {
if (1) {} // Needed for match
if (this->fogMode == 0) {
globalCtx->envCtx.unk_BF = 0;
globalCtx->envCtx.unk_D8 = 0.5f + 0.5f * Math_SinS(this->work[BFD_VAR_TIMER] * 0x500);
globalCtx->envCtx.unk_DC = 2;
globalCtx->envCtx.unk_BD = 1;
globalCtx->envCtx.unk_BE = 0;
globalCtx->envCtx.lightSettingOverride = 0;
globalCtx->envCtx.lightBlend = 0.5f + 0.5f * Math_SinS(this->work[BFD_VAR_TIMER] * 0x500);
globalCtx->envCtx.lightBlendOverride = LIGHT_BLEND_OVERRIDE_FULL_CONTROL;
globalCtx->envCtx.lightSetting = 1;
globalCtx->envCtx.prevLightSetting = 0;
} else if (this->fogMode == 3) {
globalCtx->envCtx.unk_BF = 0;
globalCtx->envCtx.unk_DC = 2;
globalCtx->envCtx.unk_BD = 2;
globalCtx->envCtx.unk_BE = 0;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.05f);
globalCtx->envCtx.lightSettingOverride = 0;
globalCtx->envCtx.lightBlendOverride = LIGHT_BLEND_OVERRIDE_FULL_CONTROL;
globalCtx->envCtx.lightSetting = 2;
globalCtx->envCtx.prevLightSetting = 0;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.05f);
} else if (this->fogMode == 2) {
this->fogMode--;
globalCtx->envCtx.unk_BF = 0;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 0.55f + 0.05f * Math_SinS(this->work[BFD_VAR_TIMER] * 0x3E00), 1.0f,
0.15f);
globalCtx->envCtx.unk_DC = 2;
globalCtx->envCtx.unk_BD = 3;
globalCtx->envCtx.unk_BE = 0;
globalCtx->envCtx.lightSettingOverride = 0;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 0.55f + 0.05f * Math_SinS(this->work[BFD_VAR_TIMER] * 0x3E00),
1.0f, 0.15f);
globalCtx->envCtx.lightBlendOverride = LIGHT_BLEND_OVERRIDE_FULL_CONTROL;
globalCtx->envCtx.lightSetting = 3;
globalCtx->envCtx.prevLightSetting = 0;
} else if (this->fogMode == 10) {
this->fogMode = 1;
globalCtx->envCtx.unk_BF = 0;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 0.21f + 0.07f * Math_SinS(this->work[BFD_VAR_TIMER] * 0xC00), 1.0f,
0.05f);
globalCtx->envCtx.unk_DC = 2;
globalCtx->envCtx.unk_BD = 3;
globalCtx->envCtx.unk_BE = 0;
globalCtx->envCtx.lightSettingOverride = 0;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 0.21f + 0.07f * Math_SinS(this->work[BFD_VAR_TIMER] * 0xC00),
1.0f, 0.05f);
globalCtx->envCtx.lightBlendOverride = LIGHT_BLEND_OVERRIDE_FULL_CONTROL;
globalCtx->envCtx.lightSetting = 3;
globalCtx->envCtx.prevLightSetting = 0;
} else if (this->fogMode == 1) {
Math_ApproachF(&globalCtx->envCtx.unk_D8, 0.0f, 1.0f, 0.03f);
if (globalCtx->envCtx.unk_D8 <= 0.01f) {
Math_ApproachF(&globalCtx->envCtx.lightBlend, 0.0f, 1.0f, 0.03f);
if (globalCtx->envCtx.lightBlend <= 0.01f) {
this->fogMode = 0;
}
}
@ -1164,7 +1164,7 @@ void BossFd_Effects(BossFd* this, GlobalContext* globalCtx) {
if ((this->actor.colChkInfo.health == 0) ||
((this->introState == BFD_CS_EMERGE) && (this->actor.world.rot.x > 0x3000))) {
if ((u8)this->fogMode == 0) {
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
}
this->fogMode = 2;
}

View file

@ -411,7 +411,7 @@ void BossFd2_BreatheFire(BossFd2* this, GlobalContext* globalCtx) {
}
if ((25.0f <= this->skelAnime.curFrame) && (this->skelAnime.curFrame < 70.0f)) {
if (this->skelAnime.curFrame == 25.0f) {
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
}
Audio_PlayActorSound2(&this->actor, NA_SE_EN_VALVAISA_FIRE - SFX_FLAG);
if (this->skelAnime.curFrame > 50) {

View file

@ -624,7 +624,7 @@ void BossGanon_IntroCutscene(BossGanon* this, GlobalContext* globalCtx) {
// fallthrough
case 3:
this->envLightMode = 0;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
this->csCamAt.y = (sinf(this->unk_704) * 300.0f) + this->csCamEye.y;
this->csCamAt.z = (cosf(this->unk_704) * -300.0f) + this->csCamEye.z;
Math_ApproachF(&this->unk_704, 0.25f, 0.05f, this->csCamAtMaxStep.y);
@ -662,7 +662,7 @@ void BossGanon_IntroCutscene(BossGanon* this, GlobalContext* globalCtx) {
this->envLightMode = 5;
if (this->csTimer < 50) {
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
}
if (this->csTimer == 10) {
@ -693,7 +693,7 @@ void BossGanon_IntroCutscene(BossGanon* this, GlobalContext* globalCtx) {
this->fwork[GDF_TRIFORCE_PRIM_B] = 255.0f;
this->fwork[GDF_TRIFORCE_ENV_G] = 100.0f;
func_80078884(NA_SE_EV_TRIFORCE_MARK);
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
// fallthrough
case 7:
this->envLightMode = 6;
@ -708,7 +708,7 @@ void BossGanon_IntroCutscene(BossGanon* this, GlobalContext* globalCtx) {
}
if (this->csTimer == 30) {
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
}
BossGanon_SetIntroCsCamera(this, 4);
@ -740,7 +740,7 @@ void BossGanon_IntroCutscene(BossGanon* this, GlobalContext* globalCtx) {
this->fwork[GDF_TRIFORCE_PRIM_B] = 255.0f;
this->fwork[GDF_TRIFORCE_ENV_G] = 100.0f;
func_80078884(NA_SE_EV_TRIFORCE_MARK);
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
// fallthrough
case 9:
this->envLightMode = 7;
@ -760,7 +760,7 @@ void BossGanon_IntroCutscene(BossGanon* this, GlobalContext* globalCtx) {
}
if (this->csTimer == 32) {
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
}
if (this->csTimer == 50) {
@ -832,7 +832,7 @@ void BossGanon_IntroCutscene(BossGanon* this, GlobalContext* globalCtx) {
case 15: // side view of all 3 of them
this->envLightMode = 0;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
BossGanon_SetIntroCsCamera(this, 10);
if (this->csTimer == 30) {
@ -925,7 +925,7 @@ void BossGanon_IntroCutscene(BossGanon* this, GlobalContext* globalCtx) {
this->fwork[GDF_TRIFORCE_PRIM_A] = 0.0f;
this->fwork[GDF_TRIFORCE_PRIM_B] = 255.0f;
this->fwork[GDF_TRIFORCE_ENV_G] = 100.0f;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
// fallthrough
case 19: // show triforce
this->envLightMode = 8;
@ -934,7 +934,7 @@ void BossGanon_IntroCutscene(BossGanon* this, GlobalContext* globalCtx) {
this->envLightMode = 9;
if (this->csTimer == 60) {
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
}
}
@ -1260,7 +1260,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, GlobalContext* globalCtx)
this->envLightMode = 13;
if (this->csTimer < 30) {
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
}
if (this->csTimer >= 2) {
@ -1408,13 +1408,13 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, GlobalContext* globalCtx)
this->envLightMode = 15;
this->unk_508 = 0.0f;
this->fwork[GDF_FWORK_1] = 1000.0f;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
}
break;
case 7:
if (this->csTimer < 10) {
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
}
if (this->csTimer == 30) {
@ -1543,7 +1543,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, GlobalContext* globalCtx)
sCape->tearTimer = 20;
this->whiteFillAlpha = 255.0f;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
// fallthrough
case 101:
player->actor.world.pos.y = 4102.0f;
@ -1641,7 +1641,7 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, GlobalContext* globalCtx)
this->csCamAt.z = sZelda->actor.world.pos.z;
if (this->csTimer >= 10) {
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.05f);
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.05f);
}
if (this->csTimer == 10) {
@ -3016,106 +3016,107 @@ void BossGanon_Update(Actor* thisx, GlobalContext* globalCtx2) {
}
}
globalCtx->envCtx.unk_BF = 0;
globalCtx->envCtx.unk_BE = 0;
globalCtx->envCtx.unk_DC = 2;
globalCtx->envCtx.lightSettingOverride = 0;
globalCtx->envCtx.prevLightSetting = 0;
globalCtx->envCtx.lightBlendOverride = LIGHT_BLEND_OVERRIDE_FULL_CONTROL;
switch (this->envLightMode) {
case -1:
break;
case 0:
Math_ApproachF(&globalCtx->envCtx.unk_D8, 0.0f, 1.0f, 0.02f);
Math_ApproachF(&globalCtx->envCtx.lightBlend, 0.0f, 1.0f, 0.02f);
break;
case 1:
globalCtx->envCtx.unk_BD = 1;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.1f);
globalCtx->envCtx.lightSetting = 1;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.1f);
break;
case 2:
globalCtx->envCtx.unk_BD = 1;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.02f);
globalCtx->envCtx.lightSetting = 1;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.02f);
break;
case 3:
globalCtx->envCtx.unk_BD = 3;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightSetting = 3;
globalCtx->envCtx.lightBlend = 1.0f;
break;
case 35:
globalCtx->envCtx.unk_BD = 0;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightSetting = 0;
globalCtx->envCtx.lightBlend = 1.0f;
break;
case 4:
globalCtx->envCtx.unk_BD = 4;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightSetting = 4;
globalCtx->envCtx.lightBlend = 1.0f;
break;
case 5:
globalCtx->envCtx.unk_BE = 5;
globalCtx->envCtx.unk_BD = 3;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.075f);
globalCtx->envCtx.prevLightSetting = 5;
globalCtx->envCtx.lightSetting = 3;
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.075f);
break;
case 6:
globalCtx->envCtx.unk_BE = 5;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.prevLightSetting = 5;
globalCtx->envCtx.lightBlend = 0.0f;
break;
case 65:
globalCtx->envCtx.unk_BE = 3;
globalCtx->envCtx.unk_BD = 6;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.05f);
globalCtx->envCtx.prevLightSetting = 3;
globalCtx->envCtx.lightSetting = 6;
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.05f);
break;
case 7:
globalCtx->envCtx.unk_BE = 7;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.prevLightSetting = 7;
globalCtx->envCtx.lightBlend = 0.0f;
break;
case 75:
globalCtx->envCtx.unk_BE = 4;
globalCtx->envCtx.unk_BD = 8;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.05f);
globalCtx->envCtx.prevLightSetting = 4;
globalCtx->envCtx.lightSetting = 8;
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.05f);
break;
case 8:
globalCtx->envCtx.unk_BE = 3;
globalCtx->envCtx.unk_BD = 9;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.05f);
globalCtx->envCtx.prevLightSetting = 3;
globalCtx->envCtx.lightSetting = 9;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.05f);
break;
case 9:
globalCtx->envCtx.unk_BE = 3;
globalCtx->envCtx.unk_BD = 0xA;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.05f);
globalCtx->envCtx.prevLightSetting = 3;
globalCtx->envCtx.lightSetting = 10;
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.05f);
break;
case 10:
globalCtx->envCtx.unk_BE = 3;
globalCtx->envCtx.unk_BD = 0xB;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.05f);
globalCtx->envCtx.prevLightSetting = 3;
globalCtx->envCtx.lightSetting = 11;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.05f);
this->unk_1A4 = 0;
break;
case 11:
globalCtx->envCtx.unk_BE = 0xC;
globalCtx->envCtx.unk_BD = 0xB;
Math_ApproachF(&globalCtx->envCtx.unk_D8, (Math_CosS(this->unk_1A4 * 0x1800) * 0.5f) + 0.5f, 1.0f, 1.0f);
globalCtx->envCtx.prevLightSetting = 12;
globalCtx->envCtx.lightSetting = 11;
Math_ApproachF(&globalCtx->envCtx.lightBlend, (Math_CosS(this->unk_1A4 * 0x1800) * 0.5f) + 0.5f, 1.0f,
1.0f);
break;
case 12:
globalCtx->envCtx.unk_BE = 0xC;
globalCtx->envCtx.unk_BD = 3;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.05f);
globalCtx->envCtx.prevLightSetting = 12;
globalCtx->envCtx.lightSetting = 3;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.05f);
break;
case 13:
globalCtx->envCtx.unk_BD = 0xD;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.025f);
globalCtx->envCtx.lightSetting = 13;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.025f);
break;
case 14:
globalCtx->envCtx.unk_BD = 0xE;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightSetting = 14;
globalCtx->envCtx.lightBlend = 1.0f;
break;
case 15:
globalCtx->envCtx.unk_BE = 0xE;
globalCtx->envCtx.unk_BD = 0xF;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.01f);
globalCtx->envCtx.prevLightSetting = 14;
globalCtx->envCtx.lightSetting = 15;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.01f);
break;
case 16:
globalCtx->envCtx.unk_BE = 0x10;
globalCtx->envCtx.unk_BD = 0xF;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.05f);
globalCtx->envCtx.prevLightSetting = 16;
globalCtx->envCtx.lightSetting = 15;
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.05f);
break;
case 20:
globalCtx->envCtx.unk_BE = 2;
globalCtx->envCtx.unk_BD = 1;
globalCtx->envCtx.prevLightSetting = 2;
globalCtx->envCtx.lightSetting = 1;
break;
default:
break;
@ -3169,7 +3170,7 @@ void BossGanon_Update(Actor* thisx, GlobalContext* globalCtx2) {
gLensFlareScale = this->lensFlareScale;
gLensFlareColorIntensity = 10.0f;
gLensFlareScreenFillAlpha = 0;
gLensFlareGlareStrength = 0;
} else {
gCustomLensFlareOn = false;
}

View file

@ -219,7 +219,7 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
player->actor.world.pos.z = -186.0f;
player->actor.shape.rot.y = -0x5000;
Animation_MorphToLoop(&this->skelAnime, &object_ganon_anime3_Anim_002168, 0.0f);
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
// fake, tricks the compiler into allocating more stack
if (zero) {
this->subCamEye.x *= 2.0;
@ -229,7 +229,7 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
}
case 1:
if (this->unk_398 < 70) {
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
}
this->unk_339 = 3;
Math_ApproachF(&this->subCamEye.x, 1500.0f, 0.1f, this->unk_410.x * 1500.0f);
@ -245,7 +245,7 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
this->unk_39C = 2;
this->unk_398 = 0;
this->unk_410.x = 0.0f;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
} else {
break;
}
@ -360,7 +360,7 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
this->unk_339 = 5;
if (this->unk_398 == 20) {
this->unk_33C = 0.0f;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
}
} else {
this->unk_339 = 4;
@ -414,8 +414,8 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
this->subCamEye.z = -200.0f;
this->subCamAt.x = this->subCamAt.z = -200.0f;
this->subCamAt.y = this->actor.world.pos.y + 70.0f;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.unk_BE = globalCtx->envCtx.unk_BD = 0;
globalCtx->envCtx.lightBlend = 0.0f;
globalCtx->envCtx.prevLightSetting = globalCtx->envCtx.lightSetting = 0;
this->unk_339 = 0;
} else {
break;
@ -506,7 +506,7 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_ganon_anime3_Anim_003754, 0.0f);
this->unk_194 = Animation_GetLastFrame(&object_ganon_anime3_Anim_003754);
this->unk_339 = 55;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
Audio_PlayActorSound2(&this->actor, NA_SE_EN_GANON_CASBREAK);
} else {
break;
@ -728,8 +728,8 @@ void func_808FD5F4(BossGanon2* this, GlobalContext* globalCtx) {
sp68 = player->actor.world.pos;
sp68.y += 60.0f;
func_808FD210(globalCtx, &sp68);
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.unk_BE = 0;
globalCtx->envCtx.lightBlend = 0.0f;
globalCtx->envCtx.prevLightSetting = 0;
this->unk_339 = 0;
}
}
@ -1296,7 +1296,7 @@ void func_80900890(BossGanon2* this, GlobalContext* globalCtx) {
this->subCamAt = mainCam1->at;
this->unk_1A2[0] = 300;
this->unk_1A2[1] = 100;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
case 1:
if (this->unk_1A2[1] == 50) {
func_80078884(NA_SE_EN_MGANON_WALK);
@ -1326,7 +1326,7 @@ void func_80900890(BossGanon2* this, GlobalContext* globalCtx) {
this->subCamAt.y = sZelda->actor.world.pos.y + 30.0f;
this->subCamAt.z = sZelda->actor.world.pos.z - 10.0f;
Math_ApproachZeroF(&this->unk_324, 1.0f, 5.0f);
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 1.0f / 51);
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 1.0f / 51);
if (this->unk_1A2[1] == 80) {
Message_StartTextbox(globalCtx, 0x70D7, NULL);
}
@ -1406,7 +1406,7 @@ void func_80900890(BossGanon2* this, GlobalContext* globalCtx) {
break;
case 2:
Math_ApproachF(&this->unk_324, 255.0f, 1.0f, 10.0f);
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 2.0f / 51.0f);
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 2.0f / 51.0f);
if (Animation_OnFrame(&this->skelAnime, this->unk_194)) {
func_808FFDB0(this, globalCtx);
if (this->unk_334 == 0) {
@ -1485,14 +1485,14 @@ void func_8090120C(BossGanon2* this, GlobalContext* globalCtx) {
this->unk_324 = 0.0f;
this->actor.speedXZ = 0.0f;
this->unk_31A = this->unk_31C;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
case 1:
if (this->unk_398 < 90) {
this->unk_339 = 20;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.1f);
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.1f);
} else if (this->unk_398 >= 90) {
this->unk_339 = 21;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.08f);
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.08f);
}
if (this->unk_398 == 50) {
func_80078884(NA_SE_EN_MGANON_WALK);
@ -1534,7 +1534,7 @@ void func_8090120C(BossGanon2* this, GlobalContext* globalCtx) {
break;
case 2:
this->unk_339 = 22;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.1f);
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.1f);
func_80078884(NA_SE_EV_TIMETRIP_LIGHT - SFX_FLAG);
this->subCamEye.x = 250;
this->subCamEye.y = 1150.0f;
@ -1571,7 +1571,7 @@ void func_8090120C(BossGanon2* this, GlobalContext* globalCtx) {
sZelda->unk_3C8 = 10;
}
this->unk_339 = 23;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.05f);
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.05f);
} else {
this->unk_339 = 22;
}
@ -1640,7 +1640,7 @@ void func_8090120C(BossGanon2* this, GlobalContext* globalCtx) {
}
case 7:
this->unk_339 = 23;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.2f);
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.2f);
player->actor.world.pos.x = 250.0f;
player->actor.shape.rot.y = -0x4000;
player->actor.world.pos.z = 30.0f;
@ -1651,7 +1651,7 @@ void func_8090120C(BossGanon2* this, GlobalContext* globalCtx) {
if ((this->unk_398 == 22) || (this->unk_398 == 35) || (this->unk_398 == 72) || (this->unk_398 == 45)) {
func_80078884(NA_SE_EN_MGANON_DAMAGE);
func_80078884(NA_SE_IT_SHIELD_BOUND);
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
}
if ((this->unk_398 == 22) || (this->unk_398 == 35) || (this->unk_398 == 72) || (this->unk_398 == 45)) {
func_8090109C(this, globalCtx);
@ -1712,15 +1712,15 @@ void func_8090120C(BossGanon2* this, GlobalContext* globalCtx) {
if (this->unk_398 >= 1000) {
if (this->unk_398 < 1040) {
this->unk_339 = 23;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.2f);
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.2f);
}
}
if (this->unk_398 == 1040) {
Audio_PlayActorSound2(&this->actor, NA_SE_EN_MGANON_DEAD2);
this->unk_336 = 2;
this->unk_339 = 0;
globalCtx->envCtx.unk_BE = 0;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.prevLightSetting = 0;
globalCtx->envCtx.lightBlend = 0.0f;
}
if (Animation_OnFrame(&this->skelAnime, this->unk_194)) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_ganon2_Anim_008EB8, 0.0f);
@ -1742,7 +1742,7 @@ void func_8090120C(BossGanon2* this, GlobalContext* globalCtx) {
sZelda->unk_3C8 = 11;
Message_StartTextbox(globalCtx, 0x70D9, NULL);
this->unk_336 = 0;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
}
break;
case 9:
@ -1765,7 +1765,7 @@ void func_8090120C(BossGanon2* this, GlobalContext* globalCtx) {
Math_ApproachF(&this->subCamEye.y, 1130.0f, 0.05f, this->unk_410.x * 0.25f);
Math_ApproachF(&this->subCamEye.z, -260.0f, 0.05f, this->unk_410.x * 1.25f);
if ((this->unk_398 >= 40) && (this->unk_398 <= 110)) {
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.02f);
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.02f);
Math_ApproachF(&this->unk_384, 10.0f, 0.1f, 0.2f);
Audio_PlayActorSound2(&sZelda->actor, NA_SE_EV_GOD_LIGHTBALL_2 - SFX_FLAG);
} else {
@ -2068,9 +2068,9 @@ void BossGanon2_Update(Actor* thisx, GlobalContext* globalCtx) {
this->unk_332 = (s16)Rand_ZeroFloat(60.0f) + 0xA;
}
this->unk_339 = 0;
globalCtx->envCtx.unk_BE = 0;
globalCtx->envCtx.unk_BD = (s8)Rand_ZeroFloat(1.9f) + 1;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.prevLightSetting = 0;
globalCtx->envCtx.lightSetting = (s8)Rand_ZeroFloat(1.9f) + 1;
globalCtx->envCtx.lightBlend = 1.0f;
D_8090EB20.y = 0.0f;
D_8090EB20.x = D_8090EB20.y;
D_8090EB20.z = D_8090EB20.x;
@ -2085,75 +2085,75 @@ void BossGanon2_Update(Actor* thisx, GlobalContext* globalCtx) {
} else if (this->unk_332 != 0) {
this->unk_332--;
}
if ((globalCtx->envCtx.unk_D8 > 0.0f) && (this->unk_336 != 0)) {
if ((globalCtx->envCtx.lightBlend > 0.0f) && (this->unk_336 != 0)) {
globalCtx->envCtx.customSkyboxFilter = 1;
globalCtx->envCtx.skyboxFilterColor[0] = 255;
globalCtx->envCtx.skyboxFilterColor[1] = 255;
globalCtx->envCtx.skyboxFilterColor[2] = 255;
globalCtx->envCtx.skyboxFilterColor[3] = (s16)(globalCtx->envCtx.unk_D8 * 200.0f);
globalCtx->envCtx.skyboxFilterColor[3] = (s16)(globalCtx->envCtx.lightBlend * 200.0f);
} else {
globalCtx->envCtx.customSkyboxFilter = 0;
}
globalCtx->envCtx.unk_BF = 0;
globalCtx->envCtx.unk_DC = 2;
globalCtx->envCtx.lightSettingOverride = 0;
globalCtx->envCtx.lightBlendOverride = LIGHT_BLEND_OVERRIDE_FULL_CONTROL;
switch (this->unk_339) {
case 0:
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.1f);
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.1f);
break;
case 3:
globalCtx->envCtx.unk_BE = 3;
globalCtx->envCtx.unk_BD = 4;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.0125f);
globalCtx->envCtx.prevLightSetting = 3;
globalCtx->envCtx.lightSetting = 4;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.0125f);
break;
case 4:
globalCtx->envCtx.unk_BE = 5;
globalCtx->envCtx.unk_BD = 6;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.0125f);
globalCtx->envCtx.prevLightSetting = 5;
globalCtx->envCtx.lightSetting = 6;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.0125f);
break;
case 5:
globalCtx->envCtx.unk_BE = 6;
globalCtx->envCtx.unk_BD = 7;
globalCtx->envCtx.prevLightSetting = 6;
globalCtx->envCtx.lightSetting = 7;
Math_ApproachF(&this->unk_33C, 0.69f, 1.0f, 0.05f);
globalCtx->envCtx.unk_D8 =
globalCtx->envCtx.lightBlend =
(Math_SinS(globalCtx->gameplayFrames * 0x5000) * 0.15f) + (0.15f + this->unk_33C);
break;
case 55:
globalCtx->envCtx.unk_BE = 2;
globalCtx->envCtx.unk_BD = 0;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.05f);
globalCtx->envCtx.prevLightSetting = 2;
globalCtx->envCtx.lightSetting = 0;
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.05f);
break;
case 6:
globalCtx->envCtx.unk_BE = 2;
globalCtx->envCtx.unk_BD = 8;
globalCtx->envCtx.prevLightSetting = 2;
globalCtx->envCtx.lightSetting = 8;
Math_ApproachF(&this->unk_33C, 0.69f, 1.0f, 0.05f);
globalCtx->envCtx.unk_D8 =
globalCtx->envCtx.lightBlend =
(Math_SinS(globalCtx->gameplayFrames * 0x7000) * 0.15f) + (0.15f + this->unk_33C);
break;
case 7:
globalCtx->envCtx.unk_BE = 0;
globalCtx->envCtx.unk_BD = 8;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.02f);
globalCtx->envCtx.prevLightSetting = 0;
globalCtx->envCtx.lightSetting = 8;
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.02f);
break;
case 20:
globalCtx->envCtx.unk_BE = 0;
globalCtx->envCtx.unk_BD = 9;
globalCtx->envCtx.prevLightSetting = 0;
globalCtx->envCtx.lightSetting = 9;
break;
case 21:
globalCtx->envCtx.unk_BE = 0xA;
globalCtx->envCtx.unk_BD = 9;
globalCtx->envCtx.prevLightSetting = 10;
globalCtx->envCtx.lightSetting = 9;
break;
case 22:
globalCtx->envCtx.unk_BE = 0xA;
globalCtx->envCtx.unk_BD = 0xB;
globalCtx->envCtx.prevLightSetting = 10;
globalCtx->envCtx.lightSetting = 11;
break;
case 23:
globalCtx->envCtx.unk_BE = 9;
globalCtx->envCtx.unk_BD = 0xB;
globalCtx->envCtx.prevLightSetting = 9;
globalCtx->envCtx.lightSetting = 11;
break;
case 24:
globalCtx->envCtx.unk_BE = 0;
globalCtx->envCtx.unk_BD = 0xC;
globalCtx->envCtx.prevLightSetting = 0;
globalCtx->envCtx.lightSetting = 12;
break;
case -1:
break;
@ -2911,8 +2911,8 @@ void BossGanon2_DrawEffects(GlobalContext* globalCtx) {
gSPSegment(POLY_OPA_DISP++, 0x08,
Gfx_TexScroll(globalCtx->state.gfxCtx, 0, 0 - (globalCtx->gameplayFrames & 0x7F), 32, 32));
gSPDisplayList(POLY_OPA_DISP++, ovl_Boss_Ganon2_DL_0103A8);
if ((globalCtx->envCtx.unk_BD == 1) || (globalCtx->envCtx.unk_BD == 2)) {
alpha = (s16)(globalCtx->envCtx.unk_D8 * 150.0f) + 50;
if ((globalCtx->envCtx.lightSetting == 1) || (globalCtx->envCtx.lightSetting == 2)) {
alpha = (s16)(globalCtx->envCtx.lightBlend * 150.0f) + 50;
angle = M_PI / 5.0f;
} else {
alpha = 100;
@ -3052,8 +3052,8 @@ void BossGanon2_DrawShadowTexture(void* shadowTexture, BossGanon2* this, GlobalC
func_80093D18(globalCtx->state.gfxCtx);
if ((globalCtx->envCtx.unk_BD == 1) || (globalCtx->envCtx.unk_BD == 2)) {
alpha = (s16)(globalCtx->envCtx.unk_D8 * 180.0f) + 30;
if ((globalCtx->envCtx.lightSetting == 1) || (globalCtx->envCtx.lightSetting == 2)) {
alpha = (s16)(globalCtx->envCtx.lightBlend * 180.0f) + 30;
} else {
alpha = 120;
}

View file

@ -1139,14 +1139,14 @@ void BossGanondrof_Death(BossGanondrof* this, GlobalContext* globalCtx) {
vel.z = this->actor.world.pos.z - this->actor.prevPos.z;
if (bodyDecayLevel < 10) {
if (this->work[GND_DEATH_ENV_TIMER] == 0) {
if (globalCtx->envCtx.unk_BF == 0) {
globalCtx->envCtx.unk_BF = 3;
if (globalCtx->envCtx.lightSettingOverride == 0) {
globalCtx->envCtx.lightSettingOverride = 3;
this->work[GND_DEATH_ENV_TIMER] = (s16)Rand_ZeroFloat(5.0f) + 4.0f;
globalCtx->envCtx.unk_D6 = 0x28;
globalCtx->envCtx.lightBlendRateOverride = 40;
} else {
globalCtx->envCtx.unk_BF = 0;
globalCtx->envCtx.lightSettingOverride = 0;
this->work[GND_DEATH_ENV_TIMER] = (s16)Rand_ZeroFloat(2.0f) + 2.0f;
globalCtx->envCtx.unk_D6 = 0x14;
globalCtx->envCtx.lightBlendRateOverride = 20;
}
} else {
this->work[GND_DEATH_ENV_TIMER]--;
@ -1178,8 +1178,8 @@ void BossGanondrof_Death(BossGanondrof* this, GlobalContext* globalCtx) {
}
}
} else {
globalCtx->envCtx.unk_BF = 0;
globalCtx->envCtx.unk_D6 = 0x14;
globalCtx->envCtx.lightSettingOverride = 0;
globalCtx->envCtx.lightBlendRateOverride = 20;
}
this->work[GND_BODY_DECAY_FLAG] = true;

View file

@ -419,8 +419,8 @@ void BossGoma_SetupEncounter(BossGoma* this, GlobalContext* globalCtx) {
this->actionFunc = BossGoma_Encounter;
this->actionState = 0;
this->disableGameplayLogic = true;
globalCtx->envCtx.unk_BF = 4;
globalCtx->envCtx.unk_D6 = 0xFF;
globalCtx->envCtx.lightSettingOverride = 4;
globalCtx->envCtx.lightBlendRateOverride = 255;
}
/**
@ -750,8 +750,8 @@ void BossGoma_Encounter(BossGoma* this, GlobalContext* globalCtx) {
}
if (this->frameCount == 176) {
globalCtx->envCtx.unk_BF = 3;
globalCtx->envCtx.unk_D6 = 0xFFFF;
globalCtx->envCtx.lightSettingOverride = 3;
globalCtx->envCtx.lightBlendRateOverride = LIGHT_BLENDRATE_OVERRIDE_NONE;
}
if (this->frameCount == 190) {
@ -805,7 +805,7 @@ void BossGoma_Encounter(BossGoma* this, GlobalContext* globalCtx) {
Math_ApproachF(&this->subCamAt.z, this->actor.world.pos.z, 0.2f, 100.0f);
if (this->framesUntilNextAction == 30) {
globalCtx->envCtx.unk_BF = 4;
globalCtx->envCtx.lightSettingOverride = 4;
}
if (this->framesUntilNextAction < 20) {

View file

@ -491,10 +491,10 @@ void BossTw_Init(Actor* thisx, GlobalContext* globalCtx2) {
if (!sTwInitalized) {
sTwInitalized = true;
globalCtx->envCtx.unk_BF = 1;
globalCtx->envCtx.unk_BE = 1;
globalCtx->envCtx.unk_BD = 1;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightSettingOverride = 1;
globalCtx->envCtx.prevLightSetting = 1;
globalCtx->envCtx.lightSetting = 1;
globalCtx->envCtx.lightBlend = 0.0f;
D_8094C874 = D_8094C876 = D_8094C878 = D_8094C87A = D_8094C87C = D_8094C87E = D_8094C870 = D_8094C86F =
D_8094C872 = sBeamDivertTimer = sEnvType = sGroundBlastType = sFreezeState = sTwinrovaBlastType =
@ -880,7 +880,7 @@ s32 BossTw_CheckBeamReflection(BossTw* this, GlobalContext* globalCtx) {
// beam hit the shield, normal shield equipped,
// divert the beam backwards from link's Y rotation
BossTw_AddShieldDeflectEffect(globalCtx, 10.0f, this->actor.params);
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
this->timers[0] = 10;
func_80078884(NA_SE_IT_SHIELD_REFLECT_MG2);
}
@ -1001,8 +1001,8 @@ void BossTw_ShootBeam(BossTw* this, GlobalContext* globalCtx) {
if (this->timers[1] < 50) {
if (this->timers[1] < 10) {
if (this->timers[1] == 9) {
globalCtx->envCtx.unk_D8 = 0.5f;
globalCtx->envCtx.unk_BD = 3 - this->actor.params;
globalCtx->envCtx.lightBlend = 0.5f;
globalCtx->envCtx.lightSetting = 3 - this->actor.params;
Audio_PlayActorSound2(&this->actor, NA_SE_EN_TWINROBA_MASIC_SET);
}
@ -1118,7 +1118,7 @@ void BossTw_ShootBeam(BossTw* this, GlobalContext* globalCtx) {
this->groundBlastPos.x = 0.0f;
this->groundBlastPos.y = 0.0f;
this->groundBlastPos.z = 0.0f;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
func_800AA000(0.0f, 0x64, 5, 4);
} else if (beamReflection == 0) {
BossTw_BeamHitPlayerCheck(this, globalCtx);
@ -1278,7 +1278,7 @@ void BossTw_ShootBeam(BossTw* this, GlobalContext* globalCtx) {
}
this->beamReflectionDist = sp130.z;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 0.8f, 1.0f, 0.2f);
Math_ApproachF(&globalCtx->envCtx.lightBlend, 0.8f, 1.0f, 0.2f);
}
break;
}
@ -1320,7 +1320,7 @@ void BossTw_ShootBeam(BossTw* this, GlobalContext* globalCtx) {
BossTw_SetupHitByBeam(otherTw, globalCtx);
Audio_PlayActorSound2(&otherTw->actor, NA_SE_EN_TWINROBA_DAMAGE_VOICE);
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
otherTw->actor.colChkInfo.health++;
}
}
@ -1664,8 +1664,8 @@ void BossTw_TwinrovaMergeCS(BossTw* this, GlobalContext* globalCtx) {
}
sEnvType = -1;
globalCtx->envCtx.unk_BD = 4;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1, 1, 0.1f);
globalCtx->envCtx.lightSetting = 4;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1, 1, 0.1f);
// fallthrough
case 2:
SkelAnime_Update(&this->skelAnime);
@ -1711,7 +1711,7 @@ void BossTw_TwinrovaMergeCS(BossTw* this, GlobalContext* globalCtx) {
}
if (this->timers[2] == 4) {
sEnvType = 0;
globalCtx->envCtx.unk_BE = 5;
globalCtx->envCtx.prevLightSetting = 5;
}
if (this->timers[2] == 1) {
@ -1846,8 +1846,8 @@ void BossTw_TwinrovaIntroCS(BossTw* this, GlobalContext* globalCtx) {
Math_ApproachF(&this->subCamUpdateRate, 0.01f, 1.0f, 0.0001f);
if (this->work[CS_TIMER_1] > 100) {
globalCtx->envCtx.unk_BD = 0;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.03f);
globalCtx->envCtx.lightSetting = 0;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.03f);
}
if (this->work[CS_TIMER_1] == 180) {
@ -1957,11 +1957,11 @@ void BossTw_TwinrovaIntroCS(BossTw* this, GlobalContext* globalCtx) {
if (this->work[CS_TIMER_1] >= 30) {
if (this->work[CS_TIMER_1] < 45) {
globalCtx->envCtx.unk_BE = 0;
globalCtx->envCtx.unk_BD = 2;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.prevLightSetting = 0;
globalCtx->envCtx.lightSetting = 2;
globalCtx->envCtx.lightBlend = 1.0f;
} else {
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.1f);
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.1f);
}
if (this->work[CS_TIMER_1] == 30) {
@ -1980,7 +1980,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, GlobalContext* globalCtx) {
}
Audio_PlayActorSound2(&sKoumePtr->actor, NA_SE_EN_TWINROBA_TRANSFORM);
globalCtx->envCtx.unk_D8 = 0;
globalCtx->envCtx.lightBlend = 0;
}
if (this->work[CS_TIMER_1] >= 35) {
@ -2121,10 +2121,10 @@ void BossTw_TwinrovaIntroCS(BossTw* this, GlobalContext* globalCtx) {
if (this->work[CS_TIMER_1] >= 30) {
if (this->work[CS_TIMER_1] < 45) {
globalCtx->envCtx.unk_BD = 3;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightSetting = 3;
globalCtx->envCtx.lightBlend = 1.0f;
} else {
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.1f);
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.1f);
}
if (this->work[CS_TIMER_1] == 30) {
@ -2142,7 +2142,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, GlobalContext* globalCtx) {
}
Audio_PlayActorSound2(&sKotakePtr->actor, NA_SE_EN_TWINROBA_TRANSFORM);
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.lightBlend = 0.0f;
}
if (this->work[CS_TIMER_1] >= 35) {
@ -2212,8 +2212,8 @@ void BossTw_TwinrovaIntroCS(BossTw* this, GlobalContext* globalCtx) {
case 20:
if (this->work[CS_TIMER_1] > 20 && this->work[CS_TIMER_1] < 120) {
globalCtx->envCtx.unk_BD = 1;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.015f);
globalCtx->envCtx.lightSetting = 1;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.015f);
}
if (this->work[CS_TIMER_1] == 90) {
@ -2222,9 +2222,9 @@ void BossTw_TwinrovaIntroCS(BossTw* this, GlobalContext* globalCtx) {
if (this->work[CS_TIMER_1] == 120) {
sEnvType = 0;
globalCtx->envCtx.unk_BE = 1;
globalCtx->envCtx.unk_BD = 1;
globalCtx->envCtx.unk_D8 = 0.0f;
globalCtx->envCtx.prevLightSetting = 1;
globalCtx->envCtx.lightSetting = 1;
globalCtx->envCtx.lightBlend = 0.0f;
TitleCard_InitBossName(globalCtx, &globalCtx->actorCtx.titleCtx,
SEGMENTED_TO_VIRTUAL(object_tw_Blob_02E170), 0xA0, 0xB4, 0x80, 0x28);
SET_EVENTCHKINF(EVENTCHKINF_75);
@ -2642,13 +2642,13 @@ void BossTw_TwinrovaDeathCS(BossTw* this, GlobalContext* globalCtx) {
if (this->work[CS_TIMER_1] >= 55) {
if (this->work[CS_TIMER_1] == 55) {
globalCtx->envCtx.unk_D8 = 0;
globalCtx->envCtx.lightBlend = 0;
}
sEnvType = -1;
globalCtx->envCtx.unk_BE = 5;
globalCtx->envCtx.unk_BD = 0;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.015f);
globalCtx->envCtx.prevLightSetting = 5;
globalCtx->envCtx.lightSetting = 0;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.015f);
Math_ApproachF(&this->actor.scale.x, 0.00024999998f, 0.1f, 0.00005f);
this->actor.shape.rot.y += (s16)this->actor.speedXZ;
this->workf[UNK_F13] += this->actor.speedXZ;
@ -2785,13 +2785,13 @@ void BossTw_TwinrovaDeathCS(BossTw* this, GlobalContext* globalCtx) {
case 3:
BossTw_DeathCSMsgSfx(this, globalCtx);
if (this->work[CS_TIMER_2] < 150) {
globalCtx->envCtx.unk_BE = 1;
globalCtx->envCtx.unk_BD = 0;
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.1f);
globalCtx->envCtx.prevLightSetting = 1;
globalCtx->envCtx.lightSetting = 0;
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.1f);
} else {
globalCtx->envCtx.unk_BE = 1;
globalCtx->envCtx.unk_BD = 6;
Math_ApproachF(&globalCtx->envCtx.unk_D8, (Math_SinS(this->work[CS_TIMER_2] * 4096) / 4.0f) + 0.75f,
globalCtx->envCtx.prevLightSetting = 1;
globalCtx->envCtx.lightSetting = 6;
Math_ApproachF(&globalCtx->envCtx.lightBlend, (Math_SinS(this->work[CS_TIMER_2] * 4096) / 4.0f) + 0.75f,
1.0f, 0.1f);
}
@ -3138,33 +3138,33 @@ void BossTw_TwinrovaUpdate(Actor* thisx, GlobalContext* globalCtx2) {
osSyncPrintf("OooooooooooooooooooooooooooooooooCC\n");
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
globalCtx->envCtx.unk_DC = 2;
globalCtx->envCtx.lightBlendOverride = LIGHT_BLEND_OVERRIDE_FULL_CONTROL;
switch (sEnvType) {
case 0:
Math_ApproachZeroF(&globalCtx->envCtx.unk_D8, 1.0f, 0.02f);
Math_ApproachZeroF(&globalCtx->envCtx.lightBlend, 1.0f, 0.02f);
break;
case 1:
globalCtx->envCtx.unk_BD = 3;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 0.5f, 1.0f, 0.05f);
globalCtx->envCtx.lightSetting = 3;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 0.5f, 1.0f, 0.05f);
break;
case 2:
globalCtx->envCtx.unk_BD = 2;
Math_ApproachF(&globalCtx->envCtx.unk_D8, (Math_SinS(this->work[CS_TIMER_1] * 0x3000) * 0.03f) + 0.5f, 1.0f,
0.05f);
globalCtx->envCtx.lightSetting = 2;
Math_ApproachF(&globalCtx->envCtx.lightBlend, (Math_SinS(this->work[CS_TIMER_1] * 0x3000) * 0.03f) + 0.5f,
1.0f, 0.05f);
break;
case 3:
globalCtx->envCtx.unk_BD = 3;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.1f);
globalCtx->envCtx.lightSetting = 3;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.1f);
break;
case 4:
globalCtx->envCtx.unk_BD = 2;
Math_ApproachF(&globalCtx->envCtx.unk_D8, (Math_SinS(this->work[CS_TIMER_1] * 0x3E00) * 0.05f) + 0.95f,
globalCtx->envCtx.lightSetting = 2;
Math_ApproachF(&globalCtx->envCtx.lightBlend, (Math_SinS(this->work[CS_TIMER_1] * 0x3E00) * 0.05f) + 0.95f,
1.0f, 0.1f);
break;
case 5:
globalCtx->envCtx.unk_BD = 0;
Math_ApproachF(&globalCtx->envCtx.unk_D8, 1.0f, 1.0f, 0.05f);
globalCtx->envCtx.lightSetting = 0;
Math_ApproachF(&globalCtx->envCtx.lightBlend, 1.0f, 1.0f, 0.05f);
break;
case -1:
break;
@ -3969,7 +3969,7 @@ void BossTw_BlastFire(BossTw* this, GlobalContext* globalCtx) {
if (this->timers[0] == 50) {
D_8094C86F = 10;
D_8094C872 = 7;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
}
if (this->timers[0] <= 50) {
@ -4019,7 +4019,7 @@ void BossTw_BlastFire(BossTw* this, GlobalContext* globalCtx) {
Rand_ZeroFloat(10.0f) + 25.0f, this->blastType);
}
globalCtx->envCtx.unk_D8 = 0.5f;
globalCtx->envCtx.lightBlend = 0.5f;
}
this->csState1 = 2;
@ -4159,7 +4159,7 @@ void BossTw_BlastIce(BossTw* this, GlobalContext* globalCtx) {
if (this->timers[0] == 50) {
D_8094C86F = 10;
D_8094C872 = 7;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
}
if (this->timers[0] <= 50) {
@ -4209,7 +4209,7 @@ void BossTw_BlastIce(BossTw* this, GlobalContext* globalCtx) {
Rand_ZeroFloat(10.0f) + 25.0f, this->blastType);
}
globalCtx->envCtx.unk_D8 = 0.5f;
globalCtx->envCtx.lightBlend = 0.5f;
}
this->csState1 = 2;
@ -4345,7 +4345,7 @@ s32 BossTw_BlastShieldCheck(BossTw* this, GlobalContext* globalCtx) {
if (info->toucher.dmgFlags & DMG_SHIELD) {
this->work[INVINC_TIMER] = 7;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
func_800AA000(0.0f, 100, 5, 4);
if (Player_HasMirrorShieldEquipped(globalCtx)) {
@ -4683,7 +4683,7 @@ void BossTw_UpdateEffects(GlobalContext* globalCtx) {
}
sTwinrovaPtr->twinrovaStun = 1;
globalCtx->envCtx.unk_D8 = 1.0f;
globalCtx->envCtx.lightBlend = 1.0f;
eff->type = TWEFF_NONE;
}
}

View file

@ -957,7 +957,7 @@ void BossVa_BodyIntro(BossVa* this, GlobalContext* globalCtx) {
sSubCamEyeMaxVelFrac.z = sSubCamEyeMaxVelFrac.x;
sSubCamAtMaxVelFrac = sSubCamEyeMaxVelFrac;
if (this->timer >= 45000) {
globalCtx->envCtx.unk_BF = 1;
globalCtx->envCtx.lightSettingOverride = 1;
func_8002DF54(globalCtx, &this->actor, 8);
} else if (this->timer >= 35000) {
Audio_QueueSeqCmd(SEQ_PLAYER_BGM_MAIN << 24 | NA_BGM_BOSS);

View file

@ -2082,7 +2082,8 @@ void DemoEffect_DrawTimeWarp(Actor* thisx, GlobalContext* globalCtx) {
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 25);
Matrix_Scale(2.0f, 2.0f, 2.0f, MTXMODE_APPLY);
SkelCurve_Draw(&this->actor, globalCtx, &this->skelCurve, DemoEffect_OverrideLimbDrawTimeWarp, NULL, 1, &this->actor);
SkelCurve_Draw(&this->actor, globalCtx, &this->skelCurve, DemoEffect_OverrideLimbDrawTimeWarp, NULL, 1,
&this->actor);
CLOSE_DISPS(gfxCtx, "../z_demo_effect.c", 3216);
}

View file

@ -118,7 +118,7 @@ void DemoKekkai_Init(Actor* thisx, GlobalContext* globalCtx) {
}
if (DemoKekkai_CheckEventFlag(thisx->params)) {
if (thisx->params == KEKKAI_TOWER) {
globalCtx->envCtx.unk_BF = 1;
globalCtx->envCtx.lightSettingOverride = 1;
}
Actor_Kill(thisx);
}

View file

@ -150,8 +150,9 @@ void EnDoor_SetupType(EnDoor* this, GlobalContext* globalCtx) {
this->actor.objBankIndex = this->requiredObjBankIndex;
this->actionFunc = EnDoor_Idle;
if (doorType == DOOR_EVENING) {
doorType =
(gSaveContext.dayTime > 0xC000 && gSaveContext.dayTime < 0xE000) ? DOOR_SCENEEXIT : DOOR_CHECKABLE;
doorType = (gSaveContext.dayTime > CLOCK_TIME(18, 0) && gSaveContext.dayTime < CLOCK_TIME(21, 0))
? DOOR_SCENEEXIT
: DOOR_CHECKABLE;
}
this->actor.world.rot.y = 0x0000;
if (doorType == DOOR_LOCKED) {

View file

@ -314,12 +314,12 @@ void EnFhgFire_LightningBurst(EnFhgFire* this, GlobalContext* globalCtx) {
this->actor.shape.rot.y += 0x1000;
if (this->work[FHGFIRE_FX_TIMER] == 49) {
globalCtx->envCtx.unk_BF = 1;
globalCtx->envCtx.unk_D6 = 0xFF;
globalCtx->envCtx.lightSettingOverride = 1;
globalCtx->envCtx.lightBlendRateOverride = 255;
}
if (this->work[FHGFIRE_FX_TIMER] == 31) {
globalCtx->envCtx.unk_BF = 0x00;
globalCtx->envCtx.unk_D6 = 0x14;
globalCtx->envCtx.lightSettingOverride = 0;
globalCtx->envCtx.lightBlendRateOverride = 20;
}
if (this->work[FHGFIRE_FX_TIMER] >= 48) {
globalCtx->envCtx.screenFillColor[0] = globalCtx->envCtx.screenFillColor[1] =
@ -369,7 +369,7 @@ void EnFhgFire_LightningBurst(EnFhgFire* this, GlobalContext* globalCtx) {
gCustomLensFlarePos = this->actor.world.pos;
gLensFlareScale = this->lensFlareScale;
gLensFlareColorIntensity = 10.0f;
gLensFlareScreenFillAlpha = 0;
gLensFlareGlareStrength = 0;
}
void EnFhgFire_SpearLight(EnFhgFire* this, GlobalContext* globalCtx) {

View file

@ -100,7 +100,7 @@ void EnHeishi1_Init(Actor* thisx, GlobalContext* globalCtx) {
// "(head) maximum turning angle speed"
osSyncPrintf(VT_FGCOL(MAGENTA) " (頭)反転アングルスピード最大☆ %f\n" VT_RST, this->headTurnSpeedMax);
osSyncPrintf(VT_FGCOL(GREEN) " 今時間 %d\n" VT_RST, ((void)0, gSaveContext.dayTime)); // "current time"
osSyncPrintf(VT_FGCOL(YELLOW) " チェック時間 %d\n" VT_RST, 0xBAAA); // "check time"
osSyncPrintf(VT_FGCOL(YELLOW) " チェック時間 %d\n" VT_RST, CLOCK_TIME(17, 30) - 1); // "check time"
osSyncPrintf("\n\n");
if (this->path == 3) {
@ -112,13 +112,13 @@ void EnHeishi1_Init(Actor* thisx, GlobalContext* globalCtx) {
}
if (this->type != 5) {
if (((gSaveContext.dayTime < 0xB888) || IS_DAY) && !GET_EVENTCHKINF(EVENTCHKINF_80)) {
if (((gSaveContext.dayTime < CLOCK_TIME(17, 18) - 1) || IS_DAY) && !GET_EVENTCHKINF(EVENTCHKINF_80)) {
this->actionFunc = EnHeishi1_SetupWalk;
} else {
Actor_Kill(&this->actor);
}
} else {
if ((gSaveContext.dayTime >= 0xB889) || !IS_DAY || GET_EVENTCHKINF(EVENTCHKINF_80)) {
if ((gSaveContext.dayTime > CLOCK_TIME(17, 18) - 1) || !IS_DAY || GET_EVENTCHKINF(EVENTCHKINF_80)) {
this->actionFunc = EnHeishi1_SetupWaitNight;
} else {
Actor_Kill(&this->actor);

View file

@ -298,7 +298,8 @@ void func_80A89A6C(EnJsjutan* this, GlobalContext* globalCtx) {
this->dyna.actor.world.pos.y = this->unk_168;
dayTime = gSaveContext.dayTime;
if (dayTime >= 0x8000) {
if (dayTime >= CLOCK_TIME(12, 0)) {
dayTime = 0xFFFF - dayTime;
}

View file

@ -865,7 +865,7 @@ void EnKanban_Draw(Actor* thisx, GlobalContext* globalCtx) {
u16 dayTime = gSaveContext.dayTime;
f32 shadowAlpha;
if (dayTime >= 0x8000) {
if (dayTime >= CLOCK_TIME(12, 0)) {
dayTime = 0xFFFF - dayTime;
}
shadowAlpha = (dayTime * 0.00275f) + 10.0f;

View file

@ -202,7 +202,7 @@ void EnMm_Destroy(Actor* thisx, GlobalContext* globalCtx) {
s32 func_80AADA70(void) {
s32 isDay = false;
if ((gSaveContext.dayTime > 0x3555) && (gSaveContext.dayTime <= 0xD556)) {
if ((gSaveContext.dayTime > CLOCK_TIME(5, 0)) && (gSaveContext.dayTime <= CLOCK_TIME(20, 0) + 1)) {
isDay = true;
}

View file

@ -35,12 +35,13 @@ void EnOkarinaEffect_SetupAction(EnOkarinaEffect* this, EnOkarinaEffectActionFun
void EnOkarinaEffect_Destroy(Actor* thisx, GlobalContext* globalCtx) {
EnOkarinaEffect* this = (EnOkarinaEffect*)thisx;
globalCtx->envCtx.unk_F2[0] = 0;
if ((gWeatherMode != 4) && (gWeatherMode != 5) && (globalCtx->envCtx.gloomySkyMode == 1)) {
globalCtx->envCtx.gloomySkyMode = 2; // end gloomy sky
globalCtx->envCtx.precipitation[PRECIP_SOS_MAX] = 0;
if ((gWeatherMode != WEATHER_MODE_RAIN) && (gWeatherMode != WEATHER_MODE_HEAVY_RAIN) &&
(globalCtx->envCtx.stormRequest == STORM_REQUEST_START)) {
globalCtx->envCtx.stormRequest = STORM_REQUEST_STOP;
Environment_StopStormNatureAmbience(globalCtx);
}
globalCtx->envCtx.lightningMode = LIGHTNING_MODE_LAST;
globalCtx->envCtx.lightningState = LIGHTNING_LAST;
}
void EnOkarinaEffect_Init(Actor* thisx, GlobalContext* globalCtx) {
@ -50,20 +51,20 @@ void EnOkarinaEffect_Init(Actor* thisx, GlobalContext* globalCtx) {
// "Ocarina Storm Effect"
osSyncPrintf(VT_FGCOL(YELLOW) "☆☆☆☆☆ オカリナあらし効果ビカビカビカ〜 ☆☆☆☆☆ \n" VT_RST);
osSyncPrintf("\n\n");
if (globalCtx->envCtx.unk_EE[1] != 0) {
if (globalCtx->envCtx.precipitation[PRECIP_RAIN_CUR] != 0) {
Actor_Kill(&this->actor);
}
EnOkarinaEffect_SetupAction(this, EnOkarinaEffect_TriggerStorm);
}
void EnOkarinaEffect_TriggerStorm(EnOkarinaEffect* this, GlobalContext* globalCtx) {
this->timer = 400; // 20 seconds
globalCtx->envCtx.unk_F2[0] = 20; // rain intensity target
globalCtx->envCtx.gloomySkyMode = 1; // start gloomy sky
if ((gWeatherMode != 0) || globalCtx->envCtx.unk_17 != 0) {
globalCtx->envCtx.unk_DE = 1;
this->timer = 400; // 20 seconds
globalCtx->envCtx.precipitation[PRECIP_SOS_MAX] = 20;
globalCtx->envCtx.stormRequest = STORM_REQUEST_START;
if ((gWeatherMode != WEATHER_MODE_CLEAR) || globalCtx->envCtx.skyboxConfig != 0) {
globalCtx->envCtx.stormState = STORM_STATE_ON;
}
globalCtx->envCtx.lightningMode = LIGHTNING_MODE_ON;
globalCtx->envCtx.lightningState = LIGHTNING_ON;
Environment_PlayStormNatureAmbience(globalCtx);
EnOkarinaEffect_SetupAction(this, EnOkarinaEffect_ManageStorm);
}
@ -74,7 +75,7 @@ void EnOkarinaEffect_ManageStorm(EnOkarinaEffect* this, GlobalContext* globalCtx
(globalCtx->msgCtx.msgLength == 0) && (!FrameAdvance_IsEnabled(globalCtx)) &&
((globalCtx->transitionMode == TRANS_MODE_OFF) || (gSaveContext.gameMode != 0))) ||
(this->timer >= 250)) {
if (globalCtx->envCtx.indoors || globalCtx->envCtx.unk_1F != 1) {
if ((globalCtx->envCtx.lightMode != LIGHT_MODE_TIME) || globalCtx->envCtx.lightConfig != 1) {
this->timer--;
}
osSyncPrintf("\nthis->timer=[%d]", this->timer);
@ -84,12 +85,12 @@ void EnOkarinaEffect_ManageStorm(EnOkarinaEffect* this, GlobalContext* globalCtx
}
}
if (D_8011FB38 != 0) {
if (gInterruptSongOfStorms) {
this->timer = 0;
}
if (this->timer == 0) {
globalCtx->envCtx.unk_F2[0] = 0;
globalCtx->envCtx.precipitation[PRECIP_SOS_MAX] = 0;
if (globalCtx->csCtx.state == CS_STATE_IDLE) {
Environment_StopStormNatureAmbience(globalCtx);
} else if (func_800FA0B4(SEQ_PLAYER_BGM_MAIN) == NA_BGM_NATURE_AMBIENCE) {
@ -97,14 +98,14 @@ void EnOkarinaEffect_ManageStorm(EnOkarinaEffect* this, GlobalContext* globalCtx
Audio_SetNatureAmbienceChannelIO(NATURE_CHANNEL_RAIN, CHANNEL_IO_PORT_1, 0);
}
osSyncPrintf("\n\n\nE_wether_flg=[%d]", gWeatherMode);
osSyncPrintf("\nrain_evt_trg=[%d]\n\n", globalCtx->envCtx.gloomySkyMode);
if (gWeatherMode == 0 && (globalCtx->envCtx.gloomySkyMode == 1)) {
globalCtx->envCtx.gloomySkyMode = 2; // end gloomy sky
osSyncPrintf("\nrain_evt_trg=[%d]\n\n", globalCtx->envCtx.stormRequest);
if (gWeatherMode == WEATHER_MODE_CLEAR && (globalCtx->envCtx.stormRequest == STORM_REQUEST_START)) {
globalCtx->envCtx.stormRequest = STORM_REQUEST_STOP;
} else {
globalCtx->envCtx.gloomySkyMode = 0;
globalCtx->envCtx.unk_DE = 0;
globalCtx->envCtx.stormRequest = STORM_REQUEST_NONE;
globalCtx->envCtx.stormState = STORM_STATE_OFF;
}
globalCtx->envCtx.lightningMode = LIGHTNING_MODE_LAST;
globalCtx->envCtx.lightningState = LIGHTNING_LAST;
Actor_Kill(&this->actor);
}
}

View file

@ -957,7 +957,7 @@ void func_80ACC00C(EnOwl* this, GlobalContext* globalCtx) {
this->actionFunc = EnOwl_WaitDefault;
this->unk_40A = 0;
this->actionFlags |= 0x80;
gTimeIncrement = 0;
gTimeSpeed = 0;
}
}

View file

@ -815,7 +815,7 @@ void func_80ADB17C(EnPoSisters* this, GlobalContext* globalCtx) {
if (this->unk_194 == 0) {
Flags_UnsetSwitch(globalCtx, 0x1B);
}
globalCtx->envCtx.unk_BF = 0xFF;
globalCtx->envCtx.lightSettingOverride = LIGHT_SETTING_OVERRIDE_NONE;
func_80078884(NA_SE_SY_CORRECT_CHIME);
Actor_Kill(&this->actor);
} else if (this->unk_19A < 32) {
@ -1093,7 +1093,7 @@ void func_80ADBF58(EnPoSisters* this, GlobalContext* globalCtx) {
this->unk_19A--;
Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.world.rot.y, 0x500);
if (this->unk_19A == 0 && this->unk_194 == 0) {
globalCtx->envCtx.unk_BF = 4;
globalCtx->envCtx.lightSettingOverride = 4;
}
if (this->unk_19A < 0) {
Math_StepToF(&this->actor.speedXZ, 5.0f, 0.2f);

View file

@ -491,7 +491,7 @@ void EnTk_Init(Actor* thisx, GlobalContext* globalCtx) {
CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
if (gSaveContext.dayTime <= 0xC000 || gSaveContext.dayTime >= 0xE000 || !!LINK_IS_ADULT ||
if (gSaveContext.dayTime <= CLOCK_TIME(18, 0) || gSaveContext.dayTime >= CLOCK_TIME(21, 0) || !!LINK_IS_ADULT ||
globalCtx->sceneNum != SCENE_SPOT02) {
Actor_Kill(&this->actor);
return;

View file

@ -127,39 +127,42 @@ void EnWeatherTag_Init(Actor* thisx, GlobalContext* globalCtx) {
}
}
u8 WeatherTag_CheckEnableWeatherEffect(EnWeatherTag* this, GlobalContext* globalCtx, u8 arg2, u8 arg3, u8 arg4, u8 arg5,
u16 arg6, u8 weatherMode) {
u8 WeatherTag_CheckEnableWeatherEffect(EnWeatherTag* this, GlobalContext* globalCtx, u8 skyboxConfig,
u8 changeSkyboxNextConfig, u8 lightConfig, u8 changeLightNextConfig,
u16 changeDuration, u8 weatherMode) {
s32 pad;
u8 ret = false;
Player* player = GET_PLAYER(globalCtx);
if (Actor_WorldDistXZToActor(&player->actor, &this->actor) < WEATHER_TAG_RANGE100(this->actor.params)) {
if ((globalCtx->envCtx.indoors != 0) || !gSkyboxBlendingEnabled ||
(globalCtx->skyboxId != SKYBOX_NORMAL_SKY && globalCtx->envCtx.unk_1F == globalCtx->envCtx.unk_20)) {
D_8011FB38 = 1;
if (globalCtx->envCtx.gloomySkyMode == 0 &&
(globalCtx->envCtx.indoors != 0 || (globalCtx->envCtx.unk_1F != 1 && globalCtx->envCtx.unk_21 == 0))) {
D_8011FB38 = 0;
if ((globalCtx->envCtx.lightMode != LIGHT_MODE_TIME) || !gSkyboxIsChanging ||
(globalCtx->skyboxId != SKYBOX_NORMAL_SKY &&
globalCtx->envCtx.lightConfig == globalCtx->envCtx.changeLightNextConfig)) {
gInterruptSongOfStorms = true;
if (globalCtx->envCtx.stormRequest == STORM_REQUEST_NONE &&
((globalCtx->envCtx.lightMode != LIGHT_MODE_TIME) ||
(globalCtx->envCtx.lightConfig != 1 && !globalCtx->envCtx.changeLightEnabled))) {
gInterruptSongOfStorms = false;
if (gWeatherMode != weatherMode) {
gWeatherMode = weatherMode;
if (globalCtx->envCtx.gloomySkyMode == 0) {
globalCtx->envCtx.unk_19 = 1;
globalCtx->envCtx.unk_17 = arg2;
globalCtx->envCtx.unk_18 = arg3;
globalCtx->envCtx.unk_1A = arg6;
globalCtx->envCtx.unk_21 = 1;
globalCtx->envCtx.unk_1F = arg4;
globalCtx->envCtx.unk_20 = arg5;
D_8011FB34 = arg5;
globalCtx->envCtx.unk_24 = arg6;
globalCtx->envCtx.unk_22 = globalCtx->envCtx.unk_24;
if (globalCtx->envCtx.stormRequest == STORM_REQUEST_NONE) {
globalCtx->envCtx.changeSkyboxState = CHANGE_SKYBOX_REQUESTED;
globalCtx->envCtx.skyboxConfig = skyboxConfig;
globalCtx->envCtx.changeSkyboxNextConfig = changeSkyboxNextConfig;
globalCtx->envCtx.changeSkyboxTimer = changeDuration;
globalCtx->envCtx.changeLightEnabled = true;
globalCtx->envCtx.lightConfig = lightConfig;
globalCtx->envCtx.changeLightNextConfig = changeLightNextConfig;
gLightConfigAfterUnderwater = changeLightNextConfig;
globalCtx->envCtx.changeDuration = changeDuration;
globalCtx->envCtx.changeLightTimer = globalCtx->envCtx.changeDuration;
}
}
ret = true;
}
} else {
if (gTimeIncrement != 0) {
gSaveContext.dayTime += 0x14;
if (gTimeSpeed != 0) {
gSaveContext.dayTime += 20;
}
}
}
@ -167,42 +170,45 @@ u8 WeatherTag_CheckEnableWeatherEffect(EnWeatherTag* this, GlobalContext* global
return ret;
}
u8 WeatherTag_CheckRestoreWeather(EnWeatherTag* this, GlobalContext* globalCtx, u8 arg2, u8 arg3, u8 arg4, u8 arg5,
u16 arg6) {
u8 WeatherTag_CheckRestoreWeather(EnWeatherTag* this, GlobalContext* globalCtx, u8 skyboxConfig,
u8 changeSkyboxNextConfig, u8 lightConfig, u8 changeLightNextConfig,
u16 changeDuration) {
s32 pad;
u8 ret = false;
Player* player = GET_PLAYER(globalCtx);
if ((WEATHER_TAG_RANGE100(this->actor.params) + 100.0f) < Actor_WorldDistXZToActor(&player->actor, &this->actor)) {
if (globalCtx->envCtx.indoors != 0 || !gSkyboxBlendingEnabled ||
(globalCtx->skyboxId != SKYBOX_NORMAL_SKY && globalCtx->envCtx.unk_1F == globalCtx->envCtx.unk_20)) {
D_8011FB38 = 1;
if ((globalCtx->envCtx.gloomySkyMode == 0) &&
(globalCtx->envCtx.indoors != 0 || (globalCtx->envCtx.unk_1F != 1 && globalCtx->envCtx.unk_21 == 0))) {
D_8011FB38 = 0;
gWeatherMode = 0;
globalCtx->envCtx.unk_19 = 1;
globalCtx->envCtx.unk_17 = arg2;
globalCtx->envCtx.unk_18 = arg3;
globalCtx->envCtx.unk_1A = arg6;
globalCtx->envCtx.unk_21 = 1;
globalCtx->envCtx.unk_1F = arg4;
globalCtx->envCtx.unk_20 = arg5;
D_8011FB34 = arg5;
globalCtx->envCtx.unk_24 = arg6;
globalCtx->envCtx.unk_22 = globalCtx->envCtx.unk_24;
if ((globalCtx->envCtx.lightMode != LIGHT_MODE_TIME) || !gSkyboxIsChanging ||
(globalCtx->skyboxId != SKYBOX_NORMAL_SKY &&
globalCtx->envCtx.lightConfig == globalCtx->envCtx.changeLightNextConfig)) {
gInterruptSongOfStorms = true;
if ((globalCtx->envCtx.stormRequest == STORM_REQUEST_NONE) &&
((globalCtx->envCtx.lightMode != LIGHT_MODE_TIME) ||
(globalCtx->envCtx.lightConfig != 1 && !globalCtx->envCtx.changeLightEnabled))) {
gInterruptSongOfStorms = false;
gWeatherMode = WEATHER_MODE_CLEAR;
globalCtx->envCtx.changeSkyboxState = CHANGE_SKYBOX_REQUESTED;
globalCtx->envCtx.skyboxConfig = skyboxConfig;
globalCtx->envCtx.changeSkyboxNextConfig = changeSkyboxNextConfig;
globalCtx->envCtx.changeSkyboxTimer = changeDuration;
globalCtx->envCtx.changeLightEnabled = true;
globalCtx->envCtx.lightConfig = lightConfig;
globalCtx->envCtx.changeLightNextConfig = changeLightNextConfig;
gLightConfigAfterUnderwater = changeLightNextConfig;
globalCtx->envCtx.changeDuration = changeDuration;
globalCtx->envCtx.changeLightTimer = globalCtx->envCtx.changeDuration;
ret = true;
}
} else if (gTimeIncrement != 0) {
gSaveContext.dayTime += 0x14;
} else if (gTimeSpeed != 0) {
gSaveContext.dayTime += 20;
}
}
return ret;
}
void EnWeatherTag_DisabledCloudyHyruleMarket(EnWeatherTag* this, GlobalContext* globalCtx) {
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 3, 60, 1)) {
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 3, 60, WEATHER_MODE_CLOUDY_CONFIG3)) {
EnWeatherTag_SetupAction(this, EnWeatherTag_EnabledCloudyHyruleMarket);
}
}
@ -214,7 +220,7 @@ void EnWeatherTag_EnabledCloudyHyruleMarket(EnWeatherTag* this, GlobalContext* g
}
void EnWeatherTag_DisabledCloudyLonLonRanch(EnWeatherTag* this, GlobalContext* globalCtx) {
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 2, 100, 2)) {
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 2, 100, WEATHER_MODE_CLOUDY_CONFIG2)) {
EnWeatherTag_SetupAction(this, EnWeatherTag_EnabledCloudyLonLonRanch);
}
}
@ -226,7 +232,7 @@ void EnWeatherTag_EnabledCloudyLonLonRanch(EnWeatherTag* this, GlobalContext* gl
}
void EnWeatherTag_DisabledCloudyDeathMountain(EnWeatherTag* this, GlobalContext* globalCtx) {
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 2, 60, 2)) {
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 2, 60, WEATHER_MODE_CLOUDY_CONFIG2)) {
EnWeatherTag_SetupAction(this, EnWeatherTag_EnabledCloudyDeathMountain);
}
}
@ -238,23 +244,23 @@ void EnWeatherTag_EnabledCloudyDeathMountain(EnWeatherTag* this, GlobalContext*
}
void EnWeatherTag_DisabledCloudySnow(EnWeatherTag* this, GlobalContext* globalCtx) {
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 2, 60, 3)) {
globalCtx->envCtx.unk_EE[3] = 64;
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 2, 60, WEATHER_MODE_SNOW)) {
globalCtx->envCtx.precipitation[PRECIP_SNOW_MAX] = 64;
EnWeatherTag_SetupAction(this, EnWeatherTag_EnabledCloudySnow);
}
}
void EnWeatherTag_EnabledCloudySnow(EnWeatherTag* this, GlobalContext* globalCtx) {
if (WeatherTag_CheckRestoreWeather(this, globalCtx, 1, 0, 2, 0, 60)) {
globalCtx->envCtx.unk_EE[3] = 0;
globalCtx->envCtx.precipitation[PRECIP_SNOW_MAX] = 0;
EnWeatherTag_SetupAction(this, EnWeatherTag_DisabledCloudySnow);
}
}
void EnWeatherTag_DisabledRainLakeHylia(EnWeatherTag* this, GlobalContext* globalCtx) {
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 2, 100, 4)) {
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 2, 100, WEATHER_MODE_RAIN)) {
Environment_PlayStormNatureAmbience(globalCtx);
globalCtx->envCtx.unk_EE[0] = 25;
globalCtx->envCtx.precipitation[PRECIP_RAIN_MAX] = 25;
EnWeatherTag_SetupAction(this, EnWeatherTag_EnabledRainLakeHylia);
}
}
@ -262,16 +268,16 @@ void EnWeatherTag_DisabledRainLakeHylia(EnWeatherTag* this, GlobalContext* globa
void EnWeatherTag_EnabledRainLakeHylia(EnWeatherTag* this, GlobalContext* globalCtx) {
if (WeatherTag_CheckRestoreWeather(this, globalCtx, 1, 0, 2, 0, 100)) {
Environment_StopStormNatureAmbience(globalCtx);
globalCtx->envCtx.unk_EE[0] = 0;
globalCtx->envCtx.precipitation[PRECIP_RAIN_MAX] = 0;
EnWeatherTag_SetupAction(this, EnWeatherTag_DisabledRainLakeHylia);
}
}
void EnWeatherTag_DisabledCloudyRainThunderKakariko(EnWeatherTag* this, GlobalContext* globalCtx) {
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 4, 100, 5)) {
if (WeatherTag_CheckEnableWeatherEffect(this, globalCtx, 0, 1, 0, 4, 100, WEATHER_MODE_HEAVY_RAIN)) {
Environment_PlayStormNatureAmbience(globalCtx);
globalCtx->envCtx.lightningMode = LIGHTNING_MODE_ON;
globalCtx->envCtx.unk_EE[0] = 30;
globalCtx->envCtx.lightningState = LIGHTNING_ON;
globalCtx->envCtx.precipitation[PRECIP_RAIN_MAX] = 30;
EnWeatherTag_SetupAction(this, EnWeatherTag_EnabledCloudyRainThunderKakariko);
}
}
@ -279,8 +285,8 @@ void EnWeatherTag_DisabledCloudyRainThunderKakariko(EnWeatherTag* this, GlobalCo
void EnWeatherTag_EnabledCloudyRainThunderKakariko(EnWeatherTag* this, GlobalContext* globalCtx) {
if (WeatherTag_CheckRestoreWeather(this, globalCtx, 1, 0, 4, 0, 100)) {
Environment_StopStormNatureAmbience(globalCtx);
globalCtx->envCtx.lightningMode = LIGHTNING_MODE_LAST;
globalCtx->envCtx.unk_EE[0] = 0;
globalCtx->envCtx.lightningState = LIGHTNING_LAST;
globalCtx->envCtx.precipitation[PRECIP_RAIN_MAX] = 0;
EnWeatherTag_SetupAction(this, EnWeatherTag_DisabledCloudyRainThunderKakariko);
}
}
@ -302,8 +308,8 @@ void EnWeatherTag_DisabledRainThunder(EnWeatherTag* this, GlobalContext* globalC
if (Actor_WorldDistXZToActor(&player->actor, &this->actor) < WEATHER_TAG_RANGE100(this->actor.params)) {
Environment_PlayStormNatureAmbience(globalCtx);
globalCtx->envCtx.lightningMode = LIGHTNING_MODE_ON;
globalCtx->envCtx.unk_EE[0] = 25;
globalCtx->envCtx.lightningState = LIGHTNING_ON;
globalCtx->envCtx.precipitation[PRECIP_RAIN_MAX] = 25;
EnWeatherTag_SetupAction(this, EnWeatherTag_EnabledRainThunder);
}
}
@ -313,9 +319,9 @@ void EnWeatherTag_EnabledRainThunder(EnWeatherTag* this, GlobalContext* globalCt
if ((WEATHER_TAG_RANGE100(this->actor.params) + 10.0f) < Actor_WorldDistXZToActor(&player->actor, &this->actor)) {
Environment_StopStormNatureAmbience(globalCtx);
globalCtx->envCtx.lightningMode = LIGHTNING_MODE_LAST;
globalCtx->envCtx.unk_EE[0] = 0;
globalCtx->envCtx.unk_EE[1] = 10;
globalCtx->envCtx.lightningState = LIGHTNING_LAST;
globalCtx->envCtx.precipitation[PRECIP_RAIN_MAX] = 0;
globalCtx->envCtx.precipitation[PRECIP_RAIN_CUR] = 10;
EnWeatherTag_SetupAction(this, EnWeatherTag_DisabledRainThunder);
}
}

View file

@ -272,8 +272,8 @@ void EnfHG_Intro(EnfHG* this, GlobalContext* globalCtx) {
-10.0f);
}
if (this->timers[0] == 90) {
globalCtx->envCtx.unk_BF = 2;
globalCtx->envCtx.unk_D6 = 0x14;
globalCtx->envCtx.lightSettingOverride = 2;
globalCtx->envCtx.lightBlendRateOverride = 20;
}
if (this->timers[0] == 100) {
this->bossGndSignal = FHG_LIGHTNING;
@ -374,8 +374,8 @@ void EnfHG_Intro(EnfHG* this, GlobalContext* globalCtx) {
Math_ApproachF(&this->subCamAt.z, this->actor.world.pos.z, 0.2f, 50.0f);
osSyncPrintf("TIME %d-------------------------------------------------\n", this->timers[0]);
if (fabsf(this->actor.world.pos.z - (GND_BOSSROOM_CENTER_Z + 400.0f - 0.5f)) < 1.0f) {
globalCtx->envCtx.unk_BF = 0;
globalCtx->envCtx.unk_D6 = 0x14;
globalCtx->envCtx.lightSettingOverride = 0;
globalCtx->envCtx.lightBlendRateOverride = 20;
this->cutsceneState = INTRO_FINISH;
Animation_MorphToLoop(&this->skin.skelAnime, &gPhantomHorseRunningAnim, -3.0f);
this->bossGndSignal = FHG_START_FIGHT;

View file

@ -863,7 +863,7 @@ void Fishing_Init(Actor* thisx, GlobalContext* globalCtx2) {
D_80B7A684 = 20;
globalCtx->specialEffects = sEffects;
gTimeIncrement = 1;
gTimeSpeed = 1;
D_80B7E0AC = 0;
D_80B7E0A6 = 10;
@ -3097,11 +3097,12 @@ void Fishing_UpdateFish(Actor* thisx, GlobalContext* globalCtx2) {
}
if (Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_NONE) {
if ((gSaveContext.dayTime >= 0xC000) && (gSaveContext.dayTime <= 0xC01B)) {
if ((gSaveContext.dayTime >= CLOCK_TIME(18, 0)) && (gSaveContext.dayTime <= CLOCK_TIME(18, 0) + 27)) {
this->unk_158 = 7;
this->unk_17A[3] = (s16)Rand_ZeroFloat(150.0f) + 200;
}
if ((gSaveContext.dayTime >= 0x3AAA) && (gSaveContext.dayTime <= 0x3AC5)) {
if ((gSaveContext.dayTime >= CLOCK_TIME(5, 30) - 1) &&
(gSaveContext.dayTime < CLOCK_TIME(5, 30) + 27)) {
this->unk_158 = 7;
this->unk_17A[3] = (s16)Rand_ZeroFloat(150.0f) + 200;
}
@ -3352,9 +3353,9 @@ void Fishing_UpdateFish(Actor* thisx, GlobalContext* globalCtx2) {
multiplier = 1.0f;
}
if ((gSaveContext.dayTime >= 0xB555) && (gSaveContext.dayTime <= 0xCAAA)) {
if ((gSaveContext.dayTime >= CLOCK_TIME(17, 0)) && (gSaveContext.dayTime < CLOCK_TIME(19, 0))) {
multiplier *= 1.75f;
} else if ((gSaveContext.dayTime >= 0x3555) && (gSaveContext.dayTime <= 0x4AAA)) {
} else if ((gSaveContext.dayTime >= CLOCK_TIME(5, 0)) && (gSaveContext.dayTime < CLOCK_TIME(7, 0))) {
multiplier *= 1.5f;
} else if (D_80B7E076 != 0) {
multiplier *= 1.5f;
@ -5574,9 +5575,9 @@ void Fishing_UpdateOwner(Actor* thisx, GlobalContext* globalCtx2) {
if (sREG(15) != 0) {
if (D_80B7A654 != (sREG(15) - 1)) {
if (D_80B7A654 == 0) {
globalCtx->envCtx.gloomySkyMode = 1;
globalCtx->envCtx.stormRequest = STORM_REQUEST_START;
} else {
globalCtx->envCtx.gloomySkyMode = 2;
globalCtx->envCtx.stormRequest = STORM_REQUEST_STOP;
}
}
@ -5584,10 +5585,10 @@ void Fishing_UpdateOwner(Actor* thisx, GlobalContext* globalCtx2) {
}
if (sREG(14) == 1) {
globalCtx->envCtx.gloomySkyMode = 1;
globalCtx->envCtx.stormRequest = STORM_REQUEST_START;
}
if (sREG(14) == -1) {
globalCtx->envCtx.gloomySkyMode = 2;
globalCtx->envCtx.stormRequest = STORM_REQUEST_STOP;
}
sREG(14) = 0;
@ -5606,10 +5607,10 @@ void Fishing_UpdateOwner(Actor* thisx, GlobalContext* globalCtx2) {
if (Rand_ZeroOne() < 0.5f) {
D_80B7A654 = (u8)Rand_ZeroFloat(10.0f) + 5;
globalCtx->envCtx.gloomySkyMode = 1;
globalCtx->envCtx.stormRequest = STORM_REQUEST_START;
} else {
D_80B7A654 = 0;
globalCtx->envCtx.gloomySkyMode = 2;
globalCtx->envCtx.stormRequest = STORM_REQUEST_STOP;
}
}

View file

@ -222,12 +222,13 @@ void ObjectKankyo_Fairies(ObjectKankyo* this, GlobalContext* globalCtx) {
}
}
if (globalCtx->envCtx.unk_EE[3] < 64 && (gSaveContext.entranceIndex != ENTR_SPOT04_0 ||
gSaveContext.sceneSetupIndex != 4 || globalCtx->envCtx.unk_EE[3])) {
globalCtx->envCtx.unk_EE[3] += 16;
if (globalCtx->envCtx.precipitation[PRECIP_SNOW_MAX] < 64 &&
(gSaveContext.entranceIndex != ENTR_SPOT04_0 || gSaveContext.sceneSetupIndex != 4 ||
globalCtx->envCtx.precipitation[PRECIP_SNOW_MAX])) {
globalCtx->envCtx.precipitation[PRECIP_SNOW_MAX] += 16;
}
for (i = 0; i < globalCtx->envCtx.unk_EE[3]; i++) {
for (i = 0; i < globalCtx->envCtx.precipitation[PRECIP_SNOW_MAX]; i++) {
// spawn in front of the camera
dx = globalCtx->view.at.x - globalCtx->view.eye.x;
dy = globalCtx->view.at.y - globalCtx->view.eye.y;
@ -495,7 +496,7 @@ void ObjectKankyo_DrawFairies(ObjectKankyo* this2, GlobalContext* globalCtx2) {
gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gSun1Tex));
gSPDisplayList(POLY_XLU_DISP++, gKokiriDustMoteMaterialDL);
for (i = 0; i < globalCtx->envCtx.unk_EE[3]; i++) {
for (i = 0; i < globalCtx->envCtx.precipitation[PRECIP_SNOW_MAX]; i++) {
Matrix_Translate(this->effects[i].base.x + this->effects[i].pos.x,
this->effects[i].base.y + this->effects[i].pos.y,
this->effects[i].base.z + this->effects[i].pos.z, MTXMODE_NEW);
@ -586,17 +587,18 @@ void ObjectKankyo_DrawSnow(ObjectKankyo* this2, GlobalContext* globalCtx2) {
if (!(globalCtx->cameraPtrs[CAM_ID_MAIN]->unk_14C & 0x100)) {
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_object_kankyo.c", 958);
if (globalCtx->envCtx.unk_EE[2] < globalCtx->envCtx.unk_EE[3]) {
if (globalCtx->envCtx.precipitation[PRECIP_SNOW_CUR] < globalCtx->envCtx.precipitation[PRECIP_SNOW_MAX]) {
if (globalCtx->state.frames % 16 == 0) {
globalCtx->envCtx.unk_EE[2] += 2;
globalCtx->envCtx.precipitation[PRECIP_SNOW_CUR] += 2;
}
} else if (globalCtx->envCtx.unk_EE[2] > globalCtx->envCtx.unk_EE[3]) {
} else if (globalCtx->envCtx.precipitation[PRECIP_SNOW_CUR] >
globalCtx->envCtx.precipitation[PRECIP_SNOW_MAX]) {
if (globalCtx->state.frames % 16 == 0) {
globalCtx->envCtx.unk_EE[2] -= 2;
globalCtx->envCtx.precipitation[PRECIP_SNOW_CUR] -= 2;
}
}
for (i = 0; i < globalCtx->envCtx.unk_EE[2]; i++) {
for (i = 0; i < globalCtx->envCtx.precipitation[PRECIP_SNOW_CUR]; i++) {
switch (this->effects[i].state) {
case 0:
// spawn in front of the camera

View file

@ -80,7 +80,7 @@ void OceffSpot_End(OceffSpot* this, GlobalContext* globalCtx) {
this->unk_174 -= 0.05f;
} else {
Actor_Kill(&this->actor);
if (gTimeIncrement != 400 && globalCtx->msgCtx.unk_E40E == 0 &&
if (gTimeSpeed != 400 && globalCtx->msgCtx.unk_E40E == 0 &&
GET_EVENTINF_HORSES_STATE() != EVENTINF_HORSES_STATE_1) {
if (globalCtx->msgCtx.ocarinaAction != OCARINA_ACTION_CHECK_NOWARP_DONE ||
globalCtx->msgCtx.ocarinaMode != OCARINA_MODE_08) {

View file

@ -179,7 +179,8 @@ void ShotSun_UpdateHyliaSun(ShotSun* this, GlobalContext* globalCtx) {
}
Actor_Kill(&this->actor);
} else {
if (!(this->actor.xzDistToPlayer > 120.0f) && gSaveContext.dayTime >= 0x4555 && gSaveContext.dayTime < 0x5000) {
if (!(this->actor.xzDistToPlayer > 120.0f) && gSaveContext.dayTime >= CLOCK_TIME(6, 30) &&
gSaveContext.dayTime < CLOCK_TIME(7, 30)) {
cylinderPos.x = player->bodyPartsPos[PLAYER_BODYPART_HEAD].x + globalCtx->envCtx.sunPos.x * (1.0f / 6.0f);
cylinderPos.y =
player->bodyPartsPos[PLAYER_BODYPART_HEAD].y - 30.0f + globalCtx->envCtx.sunPos.y * (1.0f / 6.0f);

View file

@ -4162,6 +4162,7 @@ s32 func_80839034(GlobalContext* globalCtx, Player* this, CollisionPoly* poly, u
Scene_SetTransitionForNextEntrance(globalCtx);
} else {
globalCtx->nextEntranceIndex = globalCtx->setupExitList[exitIndex - 1];
if (globalCtx->nextEntranceIndex == ENTR_RETURN_GROTTO) {
gSaveContext.respawnFlag = 2;
globalCtx->nextEntranceIndex = gSaveContext.respawn[RESPAWN_MODE_RETURN].entranceIndex;
@ -4179,9 +4180,11 @@ s32 func_80839034(GlobalContext* globalCtx, Player* this, CollisionPoly* poly, u
Play_TriggerVoidOut(globalCtx);
gSaveContext.respawnFlag = -2;
}
gSaveContext.unk_13C3 = 1;
gSaveContext.retainWeatherMode = true;
Scene_SetTransitionForNextEntrance(globalCtx);
}
globalCtx->transitionTrigger = TRANS_TRIGGER_START;
}
@ -9700,8 +9703,8 @@ void func_80847BA0(GlobalContext* globalCtx, Player* this) {
Audio_SetCodeReverb(SurfaceType_GetEcho(&globalCtx->colCtx, floorPoly, this->actor.floorBgId));
if (this->actor.floorBgId == BGCHECK_SCENE) {
func_80074CE8(globalCtx,
SurfaceType_GetLightSettingIndex(&globalCtx->colCtx, floorPoly, this->actor.floorBgId));
Environment_ChangeLightSetting(
globalCtx, SurfaceType_GetLightSettingIndex(&globalCtx->colCtx, floorPoly, this->actor.floorBgId));
} else {
func_80043508(&globalCtx->colCtx, this->actor.floorBgId);
}