diff options
author | Michael Panzlaff <michael.panzlaff@fau.de> | 2021-08-01 12:00:10 +0200 |
---|---|---|
committer | Michael Panzlaff <michael.panzlaff@fau.de> | 2021-08-25 18:03:50 +0200 |
commit | 5adc7017a33cf6d55cf76d95a72fc6f5d879bcc3 (patch) | |
tree | b3c969165d3e6ba39428a39490c7bc797c243b66 | |
parent | 9a42ad73f93adceb0c39067906e0639c8f56aa31 (diff) |
arm7: merge SND_lfo into SND_exChannel
-rw-r--r-- | arm7/arm7.lsf | 1 | ||||
-rw-r--r-- | arm7/lib/include/SND_exChannel.h | 5 | ||||
-rw-r--r-- | arm7/lib/include/SND_lfo.h | 5 | ||||
-rw-r--r-- | arm7/lib/src/SND_exChannel.c | 39 | ||||
-rw-r--r-- | arm7/lib/src/SND_lfo.c | 43 |
5 files changed, 44 insertions, 49 deletions
diff --git a/arm7/arm7.lsf b/arm7/arm7.lsf index c3960f04..e313647d 100644 --- a/arm7/arm7.lsf +++ b/arm7/arm7.lsf @@ -45,7 +45,6 @@ Autoload WRAM Object SND_main.o Object SND_capture.o Object SND_channel.o - Object SND_lfo.o Object SND_exChannel.o Object SND_seq.o Object SND_bank.o diff --git a/arm7/lib/include/SND_exChannel.h b/arm7/lib/include/SND_exChannel.h index 6bc4ab29..03fd4b41 100644 --- a/arm7/lib/include/SND_exChannel.h +++ b/arm7/lib/include/SND_exChannel.h @@ -38,4 +38,9 @@ u32 SND_GetLockedChannel(u32 weak); void SND_InvalidateWave(const void *begin, const void *end); +void SND_InitLfoParam(struct SNDLfoParam *lfoParam); +void SND_StartLfo(struct SNDLfo *lfo); +void SND_UpdateLfo(struct SNDLfo *lfo); +int SND_GetLfoValue(struct SNDLfo *lfo); + #endif //GUARD_SND_EXCHANNEL_H diff --git a/arm7/lib/include/SND_lfo.h b/arm7/lib/include/SND_lfo.h index 43055c27..f3737f08 100644 --- a/arm7/lib/include/SND_lfo.h +++ b/arm7/lib/include/SND_lfo.h @@ -5,9 +5,4 @@ #include "nitro/SND_exChannel_shared.h" -void SND_InitLfoParam(struct SNDLfoParam *lfoParam); -void SND_StartLfo(struct SNDLfo *lfo); -void SND_UpdateLfo(struct SNDLfo *lfo); -int SND_GetLfoValue(struct SNDLfo *lfo); - #endif //GUARD_SND_LFO_H diff --git a/arm7/lib/src/SND_exChannel.c b/arm7/lib/src/SND_exChannel.c index 54c5a3c4..6081150f 100644 --- a/arm7/lib/src/SND_exChannel.c +++ b/arm7/lib/src/SND_exChannel.c @@ -429,3 +429,42 @@ void SND_InvalidateWave(const void *start, const void *end) { } } } + +void SND_InitLfoParam(struct SNDLfoParam *lfoParam) { + lfoParam->target = SND_LFO_PITCH; + lfoParam->depth = 0; + lfoParam->range = 1; + lfoParam->speed = 16; + lfoParam->delay = 0; +} + +void SND_StartLfo(struct SNDLfo *lfo) { + lfo->counter = 0; + lfo->delayCounter = 0; +} + +void SND_UpdateLfo(struct SNDLfo *lfo) { + if (lfo->delayCounter < lfo->param.delay) { + lfo->delayCounter++; + } else { + u32 tmp = lfo->counter; + tmp += lfo->param.speed << 6; + tmp >>= 8; + while (tmp >= 0x80) { + tmp -= 0x80; + } + lfo->counter += lfo->param.speed << 6; + lfo->counter &= 0xFF; + lfo->counter |= tmp << 8; + } +} + +int SND_GetLfoValue(struct SNDLfo *lfo) { + if (lfo->param.depth == 0) { + return 0; + } else if (lfo->delayCounter < lfo->param.delay) { + return 0; + } else { + return SND_SinIdx((s32)((u32)lfo->counter >> 8)) * lfo->param.depth * lfo->param.range; + } +} diff --git a/arm7/lib/src/SND_lfo.c b/arm7/lib/src/SND_lfo.c deleted file mode 100644 index 262c6d27..00000000 --- a/arm7/lib/src/SND_lfo.c +++ /dev/null @@ -1,43 +0,0 @@ -#include "SND_lfo.h" - -#include "SND_util.h" -#include "SND_exChannel.h" - -void SND_InitLfoParam(struct SNDLfoParam *lfoParam) { - lfoParam->target = SND_LFO_PITCH; - lfoParam->depth = 0; - lfoParam->range = 1; - lfoParam->speed = 16; - lfoParam->delay = 0; -} - -void SND_StartLfo(struct SNDLfo *lfo) { - lfo->counter = 0; - lfo->delayCounter = 0; -} - -void SND_UpdateLfo(struct SNDLfo *lfo) { - if (lfo->delayCounter < lfo->param.delay) { - lfo->delayCounter++; - } else { - u32 tmp = lfo->counter; - tmp += lfo->param.speed << 6; - tmp >>= 8; - while (tmp >= 0x80) { - tmp -= 0x80; - } - lfo->counter += lfo->param.speed << 6; - lfo->counter &= 0xFF; - lfo->counter |= tmp << 8; - } -} - -int SND_GetLfoValue(struct SNDLfo *lfo) { - if (lfo->param.depth == 0) { - return 0; - } else if (lfo->delayCounter < lfo->param.delay) { - return 0; - } else { - return SND_SinIdx((s32)((u32)lfo->counter >> 8)) * lfo->param.depth * lfo->param.range; - } -} |