From 4c2a451b9ca9e125873cea5c5bc21f790432c158 Mon Sep 17 00:00:00 2001 From: Dragorn421 Date: Tue, 15 Jul 2025 06:52:22 +0100 Subject: [PATCH] Add `ENV_LIGHT_SETTINGS_BLEND_RATE_AND_FOG_NEAR_PACK`, fix extracted negative `blendRate` (#2653) * Add ENV_LIGHT_SETTINGS_BLEND_RATE_AND_FOG_NEAR_PACK, fix extracted negative blendRate * -> BLEND_RATE_AND_FOG_NEAR --- include/environment.h | 4 +++- tools/assets/extract/extase_oot64/scene_rooms_resources.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/environment.h b/include/environment.h index 6c23dfb336..1c820ffebd 100644 --- a/include/environment.h +++ b/include/environment.h @@ -155,8 +155,10 @@ typedef struct CurrentEnvLightSettings { // The blendRate determines how fast the current light settings fade to the next one // (under LIGHT_MODE_SETTINGS, otherwise unused). +#define BLEND_RATE_AND_FOG_NEAR(blendRate, fogNear) (s16)((((blendRate) / 4) << 10) | (fogNear)) + // Get blend rate from `EnvLightSettings.blendRateAndFogNear` in 0-255 range -#define ENV_LIGHT_SETTINGS_BLEND_RATE_U8(blendRateAndFogNear) (((blendRateAndFogNear) >> 10) * 4) +#define ENV_LIGHT_SETTINGS_BLEND_RATE_U8(blendRateAndFogNear) (u8)(((blendRateAndFogNear) >> 10) * 4) #define ENV_LIGHT_SETTINGS_FOG_NEAR(blendRateAndFogNear) ((blendRateAndFogNear) & 0x3FF) typedef struct EnvLightSettings { diff --git a/tools/assets/extract/extase_oot64/scene_rooms_resources.py b/tools/assets/extract/extase_oot64/scene_rooms_resources.py index d3b8903f2a..3b632604cd 100644 --- a/tools/assets/extract/extase_oot64/scene_rooms_resources.py +++ b/tools/assets/extract/extase_oot64/scene_rooms_resources.py @@ -293,8 +293,10 @@ class EnvLightSettingsListResource(CDataArrayNamedLengthResource): def write_blendRateAndFogNear(v): blendRate = (v >> 10) * 4 + if blendRate < 0: + blendRate += 0x100 fogNear = v & 0x3FF - return f"(({blendRate} / 4) << 10) | {fogNear}" + return f"BLEND_RATE_AND_FOG_NEAR({blendRate}, {fogNear})" elem_cdata_ext = CDataExt_Struct( (