mirror of https://github.com/PrimeDecomp/prime.git
parent
abba84e48a
commit
6fc7123b94
|
@ -3,6 +3,10 @@
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
|
#ifndef bool8
|
||||||
|
typedef char bool8;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
@ -16,10 +20,59 @@ typedef struct _SynthInfo {
|
||||||
} SynthInfo;
|
} SynthInfo;
|
||||||
|
|
||||||
typedef struct _SND_HOOKS {
|
typedef struct _SND_HOOKS {
|
||||||
void *(*malloc)(u32 len);
|
void* (*malloc)(u32 len);
|
||||||
void (*free)(void *addr);
|
void (*free)(void* addr);
|
||||||
} SND_HOOKS;
|
} SND_HOOKS;
|
||||||
|
|
||||||
|
#define SND_AUX_NUMPARAMETERS 4
|
||||||
|
|
||||||
|
typedef struct SND_AUX_INFO {
|
||||||
|
union SND_AUX_DATA {
|
||||||
|
struct SND_AUX_BUFFERUPDATE {
|
||||||
|
s32* left;
|
||||||
|
s32* right;
|
||||||
|
s32* surround;
|
||||||
|
} bufferUpdate;
|
||||||
|
struct SND_AUX_PARAMETERUPDATE {
|
||||||
|
u16 para[SND_AUX_NUMPARAMETERS];
|
||||||
|
} parameterUpdate;
|
||||||
|
} data;
|
||||||
|
} SND_AUX_INFO;
|
||||||
|
|
||||||
|
typedef struct _SND_REVHI_DELAYLINE {
|
||||||
|
s32 inPoint;
|
||||||
|
s32 outPoint;
|
||||||
|
s32 length;
|
||||||
|
f32* inputs;
|
||||||
|
f32 lastOutput;
|
||||||
|
} _SND_REVHI_DELAYLINE;
|
||||||
|
|
||||||
|
typedef struct _SND_REVHI_WORK {
|
||||||
|
_SND_REVHI_DELAYLINE AP[9];
|
||||||
|
_SND_REVHI_DELAYLINE C[9];
|
||||||
|
f32 allPassCoeff;
|
||||||
|
f32 combCoef[9];
|
||||||
|
f32 lpLastout[3];
|
||||||
|
f32 level;
|
||||||
|
f32 damping;
|
||||||
|
s32 preDelayTime;
|
||||||
|
f32 crosstalk;
|
||||||
|
f32* preDelayLine[3];
|
||||||
|
f32* preDelayPtr[3];
|
||||||
|
} _SND_REVHI_WORK;
|
||||||
|
|
||||||
|
typedef struct SND_AUX_REVERBHI {
|
||||||
|
_SND_REVHI_WORK rv;
|
||||||
|
bool8 tempDisableFX;
|
||||||
|
|
||||||
|
f32 coloration;
|
||||||
|
f32 mix;
|
||||||
|
f32 time;
|
||||||
|
f32 damping;
|
||||||
|
f32 preDelay;
|
||||||
|
f32 crosstalk;
|
||||||
|
} SND_AUX_REVERBHI;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -808,7 +808,7 @@ MUSYX_FILES :=\
|
||||||
$(BUILD_DIR)/src/musyx/hw_memory.o\
|
$(BUILD_DIR)/src/musyx/hw_memory.o\
|
||||||
$(BUILD_DIR)/asm/musyx/creverb_fx.o\
|
$(BUILD_DIR)/asm/musyx/creverb_fx.o\
|
||||||
$(BUILD_DIR)/asm/musyx/creverb.o\
|
$(BUILD_DIR)/asm/musyx/creverb.o\
|
||||||
$(BUILD_DIR)/asm/musyx/reverb_fx.o\
|
$(BUILD_DIR)/src/musyx/reverb_fx.o\
|
||||||
$(BUILD_DIR)/asm/musyx/reverb.o\
|
$(BUILD_DIR)/asm/musyx/reverb.o\
|
||||||
$(BUILD_DIR)/asm/musyx/delay_fx.o\
|
$(BUILD_DIR)/asm/musyx/delay_fx.o\
|
||||||
$(BUILD_DIR)/asm/musyx/chorus_fx.o
|
$(BUILD_DIR)/asm/musyx/chorus_fx.o
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
#include "musyx/musyx_priv.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern bool8 ReverbHICreate(_SND_REVHI_WORK* rev, f32 coloration, f32 time, f32 mix, f32 damping, f32 preDelay, f32 crosstalk);
|
||||||
|
extern void ReverbHIFree(_SND_REVHI_WORK* rev);
|
||||||
|
|
||||||
|
void sndAuxCallbackReverbHI(u8 reason, SND_AUX_INFO* info, void* user) {
|
||||||
|
switch (reason) {
|
||||||
|
case 0:
|
||||||
|
if (*((u8*)user + 0x1c4) == 0) {
|
||||||
|
ReverbHICallback(info->data.bufferUpdate.left, info->data.bufferUpdate.right, info->data.bufferUpdate.surround, user);
|
||||||
|
}
|
||||||
|
/* fallthrough */
|
||||||
|
case 1:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sndAuxCallbackPrepareReverbHI(SND_AUX_REVERBHI *rev) {
|
||||||
|
rev->tempDisableFX = 0;
|
||||||
|
return ReverbHICreate(&rev->rv, rev->coloration, rev->time, rev->mix, rev->damping, rev->preDelay, rev->crosstalk);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 sndAuxCallbackShutdownReverbHI(SND_AUX_REVERBHI* rev) {
|
||||||
|
ReverbHIFree(&rev->rv);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
Loading…
Reference in New Issue