mirror of https://github.com/PrimeDecomp/prime.git
parent
7d56323cd4
commit
317c4a497e
1
Makefile
1
Makefile
|
@ -131,6 +131,7 @@ $(BUILD_DIR)/src/musyx/dsp_import.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
$(BUILD_DIR)/src/musyx/hw_memory.o: CFLAGS := $(CFLAGS_MUSYX)
|
$(BUILD_DIR)/src/musyx/hw_memory.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
$(BUILD_DIR)/src/musyx/reverb_fx.o: CFLAGS := $(CFLAGS_MUSYX)
|
$(BUILD_DIR)/src/musyx/reverb_fx.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
$(BUILD_DIR)/src/musyx/delay_fx.o: CFLAGS := $(CFLAGS_MUSYX)
|
$(BUILD_DIR)/src/musyx/delay_fx.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
|
$(BUILD_DIR)/src/musyx/creverb_fx.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
|
@ -77,8 +77,8 @@ typedef struct SND_AUX_REVERBHI {
|
||||||
} SND_AUX_REVERBHI;
|
} SND_AUX_REVERBHI;
|
||||||
|
|
||||||
void sndAuxCallbackReverbHI(u8 reason, SND_AUX_INFO* info, void* user);
|
void sndAuxCallbackReverbHI(u8 reason, SND_AUX_INFO* info, void* user);
|
||||||
bool8 sndAuxCallbackPrepareReverbHI(SND_AUX_REVERBHI *rev);
|
s32 sndAuxCallbackPrepareReverbHI(SND_AUX_REVERBHI* rev);
|
||||||
bool8 sndAuxCallbackShutdownReverbHI(SND_AUX_REVERBHI* rev);
|
s32 sndAuxCallbackShutdownReverbHI(SND_AUX_REVERBHI* rev);
|
||||||
|
|
||||||
typedef struct SND_AUX_DELAY {
|
typedef struct SND_AUX_DELAY {
|
||||||
u32 currentSize[3];
|
u32 currentSize[3];
|
||||||
|
@ -95,12 +95,48 @@ typedef struct SND_AUX_DELAY {
|
||||||
u32 output[3]; // Output volume in % per channel
|
u32 output[3]; // Output volume in % per channel
|
||||||
} SND_AUX_DELAY;
|
} SND_AUX_DELAY;
|
||||||
|
|
||||||
|
void sndAuxCallbackDelay(u8 reason, SND_AUX_INFO* info, void* user);
|
||||||
|
s32 sndAuxCallbackUpdateSettingsDelay(SND_AUX_DELAY* delay);
|
||||||
|
s32 sndAuxCallbackPrepareDelay(SND_AUX_DELAY* rev);
|
||||||
|
s32 sndAuxCallbackShutdownDelay(SND_AUX_DELAY* rev);
|
||||||
|
s32 sndAuxCallbackUpdateSettingsReverbHI(SND_AUX_REVERBHI *rev);
|
||||||
|
|
||||||
void sndAuxCallbackDelay(u8 reason,SND_AUX_INFO *info, void *user);
|
typedef struct _SND_REVSTD_DELAYLINE {
|
||||||
bool8 sndAuxCallbackUpdateSettingsDelay(SND_AUX_DELAY *delay);
|
s32 inPoint;
|
||||||
bool8 sndAuxCallbackPrepareDelay(SND_AUX_DELAY *rev);
|
s32 outPoint;
|
||||||
bool8 sndAuxCallbackShutdownDelay(SND_AUX_DELAY* rev);
|
s32 length;
|
||||||
|
f32* inputs;
|
||||||
|
f32 lastOutput;
|
||||||
|
} _SND_REVSTD_DELAYLINE;
|
||||||
|
|
||||||
|
typedef struct _SND_REVSTD_WORK {
|
||||||
|
_SND_REVSTD_DELAYLINE AP[6];
|
||||||
|
_SND_REVSTD_DELAYLINE C[6];
|
||||||
|
f32 allPassCoeff;
|
||||||
|
f32 combCoef[6];
|
||||||
|
f32 lpLastout[3];
|
||||||
|
f32 level;
|
||||||
|
f32 damping;
|
||||||
|
s32 preDelayTime;
|
||||||
|
f32* preDelayLine[3];
|
||||||
|
f32* preDelayPtr[3];
|
||||||
|
} _SND_REVSTD_WORK;
|
||||||
|
|
||||||
|
typedef struct SND_AUX_REVERBSTD {
|
||||||
|
_SND_REVSTD_WORK rv;
|
||||||
|
bool8 tempDisableFX;
|
||||||
|
|
||||||
|
f32 coloration;
|
||||||
|
f32 mix;
|
||||||
|
f32 time;
|
||||||
|
f32 damping;
|
||||||
|
f32 preDelay;
|
||||||
|
} SND_AUX_REVERBSTD;
|
||||||
|
|
||||||
|
void sndAuxCallbackReverbSTD(u8 reason,SND_AUX_INFO *info,void *user);
|
||||||
|
s32 sndAuxCallbackPrepareReverbSTD(SND_AUX_REVERBSTD *rev);
|
||||||
|
s32 sndAuxCallbackShutdownReverbSTD(SND_AUX_REVERBSTD *rev);
|
||||||
|
s32 sndAuxCallbackUpdateSettingsReverbSTD(SND_AUX_REVERBSTD *rev);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -806,7 +806,7 @@ MUSYX_FILES :=\
|
||||||
$(BUILD_DIR)/src/musyx/dsp_import.o\
|
$(BUILD_DIR)/src/musyx/dsp_import.o\
|
||||||
$(BUILD_DIR)/asm/musyx/hw_dolphin.o\
|
$(BUILD_DIR)/asm/musyx/hw_dolphin.o\
|
||||||
$(BUILD_DIR)/src/musyx/hw_memory.o\
|
$(BUILD_DIR)/src/musyx/hw_memory.o\
|
||||||
$(BUILD_DIR)/asm/musyx/creverb_fx.o\
|
$(BUILD_DIR)/src/musyx/creverb_fx.o\
|
||||||
$(BUILD_DIR)/asm/musyx/creverb.o\
|
$(BUILD_DIR)/asm/musyx/creverb.o\
|
||||||
$(BUILD_DIR)/src/musyx/reverb_fx.o\
|
$(BUILD_DIR)/src/musyx/reverb_fx.o\
|
||||||
$(BUILD_DIR)/asm/musyx/reverb.o\
|
$(BUILD_DIR)/asm/musyx/reverb.o\
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
#include "musyx/musyx_priv.h"
|
||||||
|
|
||||||
|
extern s32 ReverbSTDCreate(_SND_REVSTD_WORK* rv, f32 coloration, f32 time, f32 mix, f32 damping, f32 preDelay);
|
||||||
|
extern void ReverbHIFree(_SND_REVSTD_WORK* rev);
|
||||||
|
extern void ReverbSTDCallback(s32* left, s32* right, s32* surround, _SND_REVSTD_WORK* rv);
|
||||||
|
|
||||||
|
void sndAuxCallbackReverbSTD(u8 reason, SND_AUX_INFO* info, void* user) {
|
||||||
|
SND_AUX_REVERBSTD* rev ;
|
||||||
|
switch (reason) {
|
||||||
|
case SND_AUX_REASON_BUFFERUPDATE:
|
||||||
|
rev = (SND_AUX_REVERBSTD*)user;
|
||||||
|
if ((u8)rev->tempDisableFX == 0) {
|
||||||
|
ReverbSTDCallback(info->data.bufferUpdate.left, info->data.bufferUpdate.right, info->data.bufferUpdate.surround,
|
||||||
|
&rev->rv);
|
||||||
|
}
|
||||||
|
case SND_AUX_REASON_PARAMETERUPDATE:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// ASSERT_MSG(FALSE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 sndAuxCallbackPrepareReverbSTD(SND_AUX_REVERBSTD* rev) {
|
||||||
|
rev->tempDisableFX = 0;
|
||||||
|
return ReverbSTDCreate(&rev->rv, rev->coloration, rev->time, rev->mix, rev->damping, rev->preDelay);
|
||||||
|
}
|
||||||
|
s32 sndAuxCallbackShutdownReverbSTD(SND_AUX_REVERBSTD* rev) {
|
||||||
|
ReverbSTDFree(&rev->rv);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 sndAuxCallbackUpdateSettingsReverbSTD(SND_AUX_REVERBSTD* rev) { /* not in MP */
|
||||||
|
}
|
|
@ -24,7 +24,7 @@ void sndAuxCallbackDelay(u8 reason, SND_AUX_INFO* info, void* user) {
|
||||||
s32* surPtr;
|
s32* surPtr;
|
||||||
SND_AUX_DELAY* delay;
|
SND_AUX_DELAY* delay;
|
||||||
switch (reason) {
|
switch (reason) {
|
||||||
case 0:
|
case SND_AUX_REASON_BUFFERUPDATE:
|
||||||
delay = (SND_AUX_DELAY*)user;
|
delay = (SND_AUX_DELAY*)user;
|
||||||
leftOffset = delay->left + (delay->currentPos[0] * 160);
|
leftOffset = delay->left + (delay->currentPos[0] * 160);
|
||||||
leftPtr = info->data.bufferUpdate.left;
|
leftPtr = info->data.bufferUpdate.left;
|
||||||
|
@ -52,14 +52,14 @@ void sndAuxCallbackDelay(u8 reason, SND_AUX_INFO* info, void* user) {
|
||||||
delay->currentPos[0] = (delay->currentPos[0] + 1) % delay->currentSize[0];
|
delay->currentPos[0] = (delay->currentPos[0] + 1) % delay->currentSize[0];
|
||||||
delay->currentPos[1] = (delay->currentPos[1] + 1) % delay->currentSize[1];
|
delay->currentPos[1] = (delay->currentPos[1] + 1) % delay->currentSize[1];
|
||||||
delay->currentPos[2] = (delay->currentPos[2] + 1) % delay->currentSize[2];
|
delay->currentPos[2] = (delay->currentPos[2] + 1) % delay->currentSize[2];
|
||||||
case 1: break;
|
case SND_AUX_REASON_PARAMETERUPDATE: break;
|
||||||
default:
|
default:
|
||||||
// ASSERT_MSG(FALSE);
|
// ASSERT_MSG(FALSE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sndAuxCallbackUpdateSettingsDelay(SND_AUX_DELAY* delay) {
|
s32 sndAuxCallbackUpdateSettingsDelay(SND_AUX_DELAY* delay) {
|
||||||
s32 i;
|
s32 i;
|
||||||
s32* left;
|
s32* left;
|
||||||
s32* right;
|
s32* right;
|
||||||
|
@ -99,12 +99,12 @@ bool8 sndAuxCallbackUpdateSettingsDelay(SND_AUX_DELAY* delay) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sndAuxCallbackPrepareDelay(SND_AUX_DELAY* delay) {
|
s32 sndAuxCallbackPrepareDelay(SND_AUX_DELAY* delay) {
|
||||||
delay->left = NULL;
|
delay->left = NULL;
|
||||||
return sndAuxCallbackUpdateSettingsDelay(delay);
|
return sndAuxCallbackUpdateSettingsDelay(delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sndAuxCallbackShutdownDelay(SND_AUX_DELAY* delay) {
|
s32 sndAuxCallbackShutdownDelay(SND_AUX_DELAY* delay) {
|
||||||
if (delay->left != NULL) {
|
if (delay->left != NULL) {
|
||||||
salFree(delay->left);
|
salFree(delay->left);
|
||||||
salFree(delay->right);
|
salFree(delay->right);
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern bool8 ReverbHICreate(_SND_REVHI_WORK* rev, f32 coloration, f32 time, f32 mix, f32 damping, f32 preDelay, f32 crosstalk);
|
extern s32 ReverbHICreate(_SND_REVHI_WORK* rev, f32 coloration, f32 time, f32 mix, f32 damping, f32 preDelay, f32 crosstalk);
|
||||||
extern void ReverbHIFree(_SND_REVHI_WORK* rev);
|
extern void ReverbHIFree(_SND_REVHI_WORK* rev);
|
||||||
|
|
||||||
void sndAuxCallbackReverbHI(u8 reason, SND_AUX_INFO* info, void* user) {
|
void sndAuxCallbackReverbHI(u8 reason, SND_AUX_INFO* info, void* user) {
|
||||||
|
@ -36,12 +36,16 @@ void sndAuxCallbackReverbHI(u8 reason, SND_AUX_INFO* info, void* user) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sndAuxCallbackPrepareReverbHI(SND_AUX_REVERBHI *rev) {
|
s32 sndAuxCallbackPrepareReverbHI(SND_AUX_REVERBHI *rev) {
|
||||||
rev->tempDisableFX = 0;
|
rev->tempDisableFX = 0;
|
||||||
return ReverbHICreate(&rev->rv, rev->coloration, rev->time, rev->mix, rev->damping, rev->preDelay, rev->crosstalk);
|
return ReverbHICreate(&rev->rv, rev->coloration, rev->time, rev->mix, rev->damping, rev->preDelay, rev->crosstalk);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sndAuxCallbackShutdownReverbHI(SND_AUX_REVERBHI* rev) {
|
s32 sndAuxCallbackShutdownReverbHI(SND_AUX_REVERBHI* rev) {
|
||||||
ReverbHIFree(&rev->rv);
|
ReverbHIFree(&rev->rv);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s32 sndAuxCallbackUpdateSettingsReverbHI(SND_AUX_REVERBHI *rev) {
|
||||||
|
/* not in MP */
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue