From 60e64e1a1d1071d6f5bdb20cfedaeb878fdb1cfc Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 9 Aug 2023 19:08:48 +0200 Subject: [PATCH] port: don't doubleswap envelope data this fixes music running out of free channels --- port/src/preprocess.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/port/src/preprocess.c b/port/src/preprocess.c index d88d6f942..6b7fbf273 100644 --- a/port/src/preprocess.c +++ b/port/src/preprocess.c @@ -98,10 +98,12 @@ static inline void preprocessALSound(ALSound *snd, u8 *bankBase) if (snd->envelope) { PD_SWAP_PTR(snd->envelope); - ALEnvelope *env = PD_PTR_BASE(snd->envelope, bankBase); - PD_SWAP_VAL(env->attackTime); - PD_SWAP_VAL(env->releaseTime); - PD_SWAP_VAL(env->decayTime); + if (!alreadySwapped((intptr_t)snd->envelope)) { + ALEnvelope *env = PD_PTR_BASE(snd->envelope, bankBase); + PD_SWAP_VAL(env->attackTime); + PD_SWAP_VAL(env->releaseTime); + PD_SWAP_VAL(env->decayTime); + } } if (snd->keyMap) {