diff --git a/src/audio.h b/src/audio.h index da02da84ac..ff72448b79 100644 --- a/src/audio.h +++ b/src/audio.h @@ -437,11 +437,6 @@ typedef union SeqArgs { } UnkCmdFF; } SeqArgs; -typedef union VolumeField { - u16 u16; - s32 s32; -} VolumeField; - /// Structure for volume fading for SFX and BGM. Has independent controls for base and envelope volumes. typedef struct Fade { /* 0x0 */ s16_16 baseVolume; @@ -452,7 +447,7 @@ typedef struct Fade { /* 0xC */ AuCallback onCompleteCallback; /* 0xC */ s32 variation; }; - /* 0x10 */ VolumeField envelopeVolume; + /* 0x10 */ s16_16 envelopeVolume; /* 0x14 */ s32 envelopeStep; /* 0x18 */ s16 envelopeTarget; /* 0x1A */ s16 envelopeTicks; diff --git a/src/audio/bgm_player.c b/src/audio/bgm_player.c index 93765b1053..50a220c526 100644 --- a/src/audio/bgm_player.c +++ b/src/audio/bgm_player.c @@ -637,7 +637,10 @@ void au_bgm_update_fade(BGMPlayer* player) { } void au_bgm_update_bus_volumes(BGMPlayer* player) { - u16 volume = (((u32)player->fadeInfo.baseVolume >> 16) * player->fadeInfo.envelopeVolume.u16) >> 15; + u16 volume = ( + ((u32)player->fadeInfo.baseVolume >> 16) * + ((u32)player->fadeInfo.envelopeVolume >> 16) + ) >> 15; s32 i; for (i = 0; i < ARRAY_COUNT(player->effectIndices); i++) { @@ -1837,7 +1840,10 @@ void au_BGMCmd_FF(BGMPlayer* player, BGMPlayerTrack* track) { if ((player->soundManager->bgmSounds[i].index) == 0) { player->soundManager->bgmSounds[i].index = arg1; player->soundManager->bgmSounds[i].volume = - ((s32)(((u32)player->fadeInfo.baseVolume >> 16) * player->fadeInfo.envelopeVolume.u16) + AU_MAX_VOLUME_16) >> 0x17; + ((s32)( + ((u32)player->fadeInfo.baseVolume >> 16) * + ((u32)player->fadeInfo.envelopeVolume >> 16) + ) + AU_MAX_VOLUME_16) >> 0x17; break; } } diff --git a/src/audio/core/engine.c b/src/audio/core/engine.c index 458ef1992c..44854bcfbb 100644 --- a/src/audio/core/engine.c +++ b/src/audio/core/engine.c @@ -461,7 +461,7 @@ void au_fade_flush(Fade* fade) { } void au_fade_set_vol_scale(Fade* fade, s16 value) { - fade->envelopeVolume.s32 = value << 16; + fade->envelopeVolume = value << 16; fade->envelopeTarget = value; fade->envelopeTicks = 0; fade->envelopeStep = 0; @@ -473,7 +473,7 @@ void au_unk_80053B04(Fade* fade, u32 duration, s32 target) { if (duration >= 250 && duration <= 100000) { ticks = (s32)(duration * 1000) / AU_FRAME_USEC; - delta = (target << 16) - fade->envelopeVolume.s32; + delta = (target << 16) - fade->envelopeVolume; fade->envelopeTarget = target; fade->envelopeTicks = ticks; @@ -488,10 +488,10 @@ void au_fade_update_envelope(Fade* fade) { fade->envelopeTicks--; if (fade->envelopeTicks != 0) { - fade->envelopeVolume.s32 += fade->envelopeStep; + fade->envelopeVolume += fade->envelopeStep; } else { fade->envelopeStep = 0; - fade->envelopeVolume.s32 = fade->envelopeTarget << 16; + fade->envelopeVolume = fade->envelopeTarget << 16; } }