Start documenting sound capture/DSP

This commit is contained in:
Fexty12573 2025-03-28 14:08:06 +01:00
parent 02cbf032db
commit 405d3a702b
5 changed files with 38 additions and 37 deletions

View File

@ -50,6 +50,7 @@ enum SoundSystemParam {
SOUND_SYSTEM_PARAM_WAVE_OUT_PRIMARY_HANDLE = 0,
SOUND_SYSTEM_PARAM_WAVE_OUT_SECONDARY_HANDLE,
SOUND_SYSTEM_PARAM_CURRENT_BANK_INFO,
SOUND_SYSTEM_PARAM_REVERB_BUFFER,
SOUND_SYSTEM_PARAM_BGM_FIXED = 5,
@ -92,7 +93,7 @@ typedef struct SoundSystem {
NNSSndHandle soundHandles[SOUND_HANDLE_TYPE_COUNT];
NNSSndWaveOutHandle waveOutHandles[2];
const NNSSndArcBankInfo *currentBankInfo;
u8 unk_BBD2C[SOUND_SYSTEM_CAPTURE_BUFFER_SIZE] ATTRIBUTE_ALIGN(32);
u8 reverbBuffer[SOUND_SYSTEM_CAPTURE_BUFFER_SIZE] ATTRIBUTE_ALIGN(32);
UnkStruct_020052C8 unk_BCD2C;
u16 unk_BCD48;
u8 bgmFixed; // BGM can't change if this is set

View File

@ -92,10 +92,10 @@ void Sound_SetWaveOutSpeed(enum WaveOutChannel param0, u32 param1);
void Sound_SetWaveOutVolume(enum WaveOutChannel param0, int param1);
BOOL Sound_PlayWaveOutReversed(u16 param0, int param1, int param2, enum WaveOutChannel param3, int heapID);
void Sound_StopWaveOutReversed(enum WaveOutChannel param0);
BOOL sub_02004EC0(void);
BOOL sub_02004EC8(int param0);
void sub_02004EEC(int param0);
void sub_02004EF4(int param0, int param1);
BOOL Sound_IsCaptureActive(void);
BOOL Sound_StartReverb(int param0);
void Sound_StopReverb(int param0);
void Sound_SetReverbVolume(int param0, int param1);
BOOL sub_02004EFC(void);
void sub_02004F44(void);
void sub_02004F4C(int param0);

View File

@ -1059,7 +1059,7 @@ static void ov21_021E5AD8(UnkStruct_ov21_021E51DC *param0)
if ((param0->unk_5C > 0) && (param0->unk_5C <= (88 / 2))) {
if (param0->unk_50 == 1) {
sub_02004EEC(0);
Sound_StopReverb(0);
}
if (param0->unk_50 != 2) {
@ -1080,7 +1080,7 @@ static void ov21_021E5AD8(UnkStruct_ov21_021E51DC *param0)
}
if (param0->unk_50 != 1) {
sub_02004EC8(0);
Sound_StartReverb(0);
param0->unk_50 = 1;
}
@ -1095,7 +1095,7 @@ static void ov21_021E5AD8(UnkStruct_ov21_021E51DC *param0)
v0--;
}
sub_02004EF4(v0, 0);
Sound_SetReverbVolume(v0, 0);
}
}
@ -1270,7 +1270,7 @@ static void ov21_021E5E18(UnkStruct_ov21_021E51DC *param0)
static void ov21_021E5E28(UnkStruct_ov21_021E51DC *param0)
{
if (param0->unk_50 == 1) {
sub_02004EEC(0);
Sound_StopReverb(0);
}
if (param0->unk_50 == 2) {

View File

@ -167,8 +167,8 @@ void *SoundSystem_GetParam(enum SoundSystemParam param)
return &soundSys->waveOutHandles[1];
case SOUND_SYSTEM_PARAM_CURRENT_BANK_INFO:
return &soundSys->currentBankInfo;
case 3:
return &soundSys->unk_BBD2C;
case SOUND_SYSTEM_PARAM_REVERB_BUFFER:
return &soundSys->reverbBuffer;
case 4:
return &soundSys->unk_BCD2C;
case SOUND_SYSTEM_PARAM_FADE_COUNTER:

View File

@ -35,10 +35,10 @@ void Sound_StopWaveOut(enum WaveOutChannel param0);
BOOL Sound_IsWaveOutPlaying(enum WaveOutChannel param0);
void Sound_StopWaveOutReversed(enum WaveOutChannel param0);
static void Sound_Impl_ReverseBuffer(u8 *param0, u32 param1);
BOOL sub_02004EC0(void);
BOOL sub_02004EC8(int param0);
void sub_02004EEC(int param0);
void sub_02004EF4(int param0, int param1);
BOOL Sound_IsCaptureActive(void);
BOOL Sound_StartReverb(int param0);
void Sound_StopReverb(int param0);
void Sound_SetReverbVolume(int param0, int param1);
BOOL sub_02004EFC(void);
void sub_02004F44(void);
void sub_02004F4C(int param0);
@ -978,33 +978,26 @@ void Sound_StopWaveOutReversed(enum WaveOutChannel channel)
}
}
BOOL sub_02004EC0(void)
BOOL Sound_IsCaptureActive(void)
{
int v0, v1;
v1 = NNS_SndCaptureIsActive();
return v1;
return NNS_SndCaptureIsActive();
}
BOOL sub_02004EC8(int param0)
BOOL Sound_StartReverb(int volume)
{
SoundSystem *v0 = SoundSystem_Get();
s8 *v1 = SoundSystem_GetParam(3);
return NNS_SndCaptureStartReverb(v1, 0x1000, (NNS_SND_CAPTURE_FORMAT_PCM16), 16000, param0);
(void)SoundSystem_Get();
void *buffer = SoundSystem_GetParam(SOUND_SYSTEM_PARAM_REVERB_BUFFER);
return NNS_SndCaptureStartReverb(buffer, 0x1000, (NNS_SND_CAPTURE_FORMAT_PCM16), 16000, volume);
}
void sub_02004EEC(int param0)
void Sound_StopReverb(int frames)
{
NNS_SndCaptureStopReverb(param0);
return;
NNS_SndCaptureStopReverb(frames);
}
void sub_02004EF4(int param0, int param1)
void Sound_SetReverbVolume(int targetVolume, int frames)
{
NNS_SndCaptureSetReverbVolume(param0, param1);
return;
NNS_SndCaptureSetReverbVolume(targetVolume, frames);
}
BOOL sub_02004EFC(void)
@ -1012,7 +1005,14 @@ BOOL sub_02004EFC(void)
SoundSystem *v1 = SoundSystem_Get();
MI_CpuClear8(SoundSystem_GetParam(4), sizeof(UnkStruct_020052C8));
return NNS_SndCaptureStartEffect(SoundSystem_GetParam(3), 0x1000, NNS_SND_CAPTURE_FORMAT_PCM16, 22000, 2, sub_020052C8, SoundSystem_GetParam(4));
return NNS_SndCaptureStartEffect(
SoundSystem_GetParam(SOUND_SYSTEM_PARAM_REVERB_BUFFER),
0x1000,
NNS_SND_CAPTURE_FORMAT_PCM16,
22000,
2,
sub_020052C8, SoundSystem_GetParam(4)
);
}
void sub_02004F44(void)
@ -1397,11 +1397,11 @@ void sub_020053CC(int param0)
{
if (param0 == 0) {
Sound_SetBGMAllocatableChannels(0x7ff);
sub_02004EEC(0);
Sound_StopReverb(0);
} else if (param0 == 1) {
Sound_SetBGMAllocatableChannels(0x7fff);
if (sub_02004EC8(30) == 0) {
if (Sound_StartReverb(30) == 0) {
(void)0;
} else {
(void)0;
@ -1409,14 +1409,14 @@ void sub_020053CC(int param0)
} else {
Sound_SetBGMAllocatableChannels(0x7fff);
if (sub_02004EC8(15) == 0) {
if (Sound_StartReverb(15) == 0) {
(void)0;
} else {
(void)0;
}
}
sub_02004EC0();
Sound_IsCaptureActive();
return;
}