From ff89ec738e9d62e473c1701c1f379b9ddde62ab9 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 29 Nov 2024 21:23:39 -0600 Subject: [PATCH] Readded reverbs but something is still wrong --- src/audio/internal.h | 4 ++-- src/audio/mixer.c | 6 +++--- src/audio/mixer.h | 4 ++-- src/audio/synthesis.c | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/audio/internal.h b/src/audio/internal.h index 4d18f1d61..9b7fb37b4 100644 --- a/src/audio/internal.h +++ b/src/audio/internal.h @@ -122,13 +122,13 @@ struct AdpcmLoop { u32 end; u32 count; u32 pad; - s16 state[16]; // only exists if count != 0. 8-byte aligned + s16* state; // only exists if count != 0. 8-byte aligned }; struct AdpcmBook { s32 order; s32 npredictors; - s16 book[1]; // size 8 * order * npredictors. 8-byte aligned + s16* book; // size 8 * order * npredictors. 8-byte aligned }; struct AudioBankSample { diff --git a/src/audio/mixer.c b/src/audio/mixer.c index c4ef3a91a..b2820d7ff 100644 --- a/src/audio/mixer.c +++ b/src/audio/mixer.c @@ -16,7 +16,7 @@ #define ROUND_DOWN_16(v) ((v) & ~0xf) //#define DMEM_BUF_SIZE (0x1000 - 0x0330 - 0x10 - 0x40) -#define DMEM_BUF_SIZE 0xC80 +#define DMEM_BUF_SIZE 0x17D0 #define BUF_U8(a) (rspa.buf.as_u8 + (a)) #define BUF_S16(a) (rspa.buf.as_s16 + (a) / sizeof(int16_t)) @@ -319,8 +319,8 @@ void aEnvMixerImpl(uint16_t in_addr, uint16_t n_samples, bool swap_reverb, } while (n > 0); } -void aMixImpl(uint16_t count, int16_t gain, uint16_t in_addr, uint16_t out_addr) { - int nbytes = ROUND_UP_32(ROUND_DOWN_16(count << 4)); +void aMixImpl(int16_t gain, uint16_t in_addr, uint16_t out_addr, uint16_t count) { + int nbytes = ROUND_UP_32(ROUND_DOWN_16(count)); int16_t *in = BUF_S16(in_addr); int16_t *out = BUF_S16(out_addr); int i; diff --git a/src/audio/mixer.h b/src/audio/mixer.h index d8ca7e8ed..9aabd51b9 100644 --- a/src/audio/mixer.h +++ b/src/audio/mixer.h @@ -49,7 +49,7 @@ void aEnvMixerImpl(uint16_t in_addr, uint16_t n_samples, bool swap_reverb, bool neg_left, bool neg_right, uint16_t dry_left_addr, uint16_t dry_right_addr, uint16_t wet_left_addr, uint16_t wet_right_addr); -void aMixImpl(uint16_t count, int16_t gain, uint16_t in_addr, uint16_t out_addr); +void aMixImpl(int16_t gain, uint16_t in_addr, uint16_t out_addr, uint16_t count); void aS8DecImpl(uint8_t flags, ADPCM_STATE state); void aAddMixerImpl(uint16_t count, uint16_t in_addr, uint16_t out_addr); void aDuplicateImpl(uint16_t count, uint16_t in_addr, uint16_t out_addr); @@ -80,7 +80,7 @@ void aUnkCmd19Impl(uint8_t f, uint16_t count, uint16_t out_addr, uint16_t in_add #define aEnvSetup2(pkt, initialVolLeft, initialVolRight) aEnvSetup2Impl(initialVolLeft, initialVolRight) #define aEnvMixer(pkt, inBuf, nSamples, swapReverb, negLeft, negRight, dryLeft, dryRight, wetLeft, wetRight) \ aEnvMixerImpl(inBuf, nSamples, swapReverb, negLeft, negRight, dryLeft, dryRight, wetLeft, wetRight) -#define aMix(pkt, c, g, i, o) aMixImpl(c, g, i, o) +#define aMix(pkt, g, i, o, c) aMixImpl(g, i, o, c) #define aS8Dec(pkt, f, s) aS8DecImpl(f, s) #define aAddMixer(pkt, s, d, c) aAddMixerImpl(s, d, c) #define aDuplicate(pkt, s, d, c) aDuplicateImpl(s, d, c) diff --git a/src/audio/synthesis.c b/src/audio/synthesis.c index 5672ff22c..973c65a72 100644 --- a/src/audio/synthesis.c +++ b/src/audio/synthesis.c @@ -293,7 +293,7 @@ Acmd* synthesis_do_one_audio_update(s16* aiBuf, s32 bufLen, Acmd* acmd, s32 upda aClearBuffer(acmd++, DMEM_ADDR_LEFT_CH, DEFAULT_LEN_2CH); i = 0; for (j = 0; j < gNumSynthesisReverbs; j++) { - gUseReverb = 0; //gSynthesisReverbs[j].useReverb; + gUseReverb = gSynthesisReverbs[j].useReverb; if (gUseReverb != 0) { acmd = synthesis_resample_and_mix_reverb(acmd, bufLen, j, updateIndex); }