diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2021-08-31 08:54:33 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2021-08-31 08:54:33 -0400 |
commit | ba5f5449a4fb7c36a20ebccb0aa560d88d6a49c0 (patch) | |
tree | 63e5cab56041641b85b231f09296d1cecf9e0a1c /arm7/lib/src/SND_global.c | |
parent | cc891865fa1eb5a823f6a3eeb1746f05addb0d90 (diff) | |
parent | 1499e9f8be9458bbf94cbc4dc6d1034f53606cd0 (diff) |
Merge branch 'pikalax_work' of github.com:PikalaxALT/pokediamond into pikalax_work
Diffstat (limited to 'arm7/lib/src/SND_global.c')
-rw-r--r-- | arm7/lib/src/SND_global.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/arm7/lib/src/SND_global.c b/arm7/lib/src/SND_global.c new file mode 100644 index 00000000..c78fcd5f --- /dev/null +++ b/arm7/lib/src/SND_global.c @@ -0,0 +1,63 @@ +#include "SND_global.h" + +#include "SND_channel.h" +#include "SND_work.h" + +#include "OS_system.h" +#include "PM.h" +#include "registers.h" +#include "syscall.h" + +void SND_Enable(void) +{ + reg_SOUNDCNT_MIX |= 0x80; +} + +void SND_Disable(void) +{ + reg_SOUNDCNT_MIX &= ~0x80; +} + +void SND_Shutdown(void) +{ + SND_Disable(); + + for (int i = 0; i < SND_CHANNEL_COUNT; i++) + { + SND_StopChannel(i, 1); + } + + reg_SNDCAPxCNT(0) = 0; + reg_SNDCAPxCNT(1) = 0; +} + +void SND_BeginSleep(void) +{ + SND_Disable(); + SVC_SoundBiasReset(0x80); + OS_SpinWait(0x40000); + PMi_ResetControl(1); + reg_POWCNT2 &= ~1; +} + +void SND_EndSleep(void) +{ + reg_POWCNT2 |= 1; // enable speakers + PMi_SetControl(1); + SVC_SoundBiasSet(0x100); + OS_SpinWait(0x7AB80); // what does this wait for and how long does it wait? + SND_Enable(); +} + +void SND_SetMasterVolume(int vol) +{ + reg_SOUNDCNT_VOL = (u8)vol; +} + +void SND_SetOutputSelector( + int leftOutputFrom, int rightOutputFrom, int outputCh1ToMixer, int outputCh3ToMixer) +{ + int masterEnable = (reg_SOUNDCNT_MIX & 0x80) ? 1 : 0; + reg_SOUNDCNT_MIX = (u8)((masterEnable << 7) | (outputCh3ToMixer << 5) | + (outputCh1ToMixer << 4) | (rightOutputFrom << 2) | (leftOutputFrom)); +} |