mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-04-24 23:18:36 -05:00
Document Waveform playback functions
This commit is contained in:
parent
ffef7b02f3
commit
02cbf032db
|
|
@ -62,7 +62,8 @@ enum SoundSystemParam {
|
|||
SOUND_SYSTEM_PARAM_FIELD_BGM_PAUSED,
|
||||
SOUND_SYSTEM_PARAM_BGM_PAUSED,
|
||||
|
||||
SOUND_SYSTEM_PARAM_WAVE_OUT_PRIMARY_ALLOCATED = 16,
|
||||
SOUND_SYSTEM_PARAM_WAVE_OUT_REVERSED_PLAYBACK = 15,
|
||||
SOUND_SYSTEM_PARAM_WAVE_OUT_PRIMARY_ALLOCATED,
|
||||
SOUND_SYSTEM_PARAM_WAVE_OUT_SECONDARY_ALLOCATED,
|
||||
|
||||
SOUND_SYSTEM_PARAM_FIELD_BGM_BANK_STATE = 19,
|
||||
|
|
@ -77,6 +78,8 @@ enum SoundSystemParam {
|
|||
|
||||
SOUND_SYSTEM_PARAM_FIELD_BGM = 32,
|
||||
|
||||
SOUND_SYSTEM_PARAM_WAVE_OUT_REVERSE_BUFFER = 34,
|
||||
|
||||
SOUND_SYSTEM_PARAM_CHATOT_CRY = 36,
|
||||
|
||||
SOUND_SYSTEM_PARAM_ALLOW_2_POKEMON_CRIES = 53,
|
||||
|
|
@ -102,7 +105,7 @@ typedef struct SoundSystem {
|
|||
u8 fieldBGMPaused;
|
||||
u8 bgmPaused;
|
||||
u16 unk_BCD5E;
|
||||
u8 unk_BCD60;
|
||||
u8 waveOutReversedPlayback;
|
||||
u8 waveOutPrimaryAllocated;
|
||||
u8 waveOutSecondaryAllocated;
|
||||
u8 unk_BCD63;
|
||||
|
|
@ -115,7 +118,7 @@ typedef struct SoundSystem {
|
|||
u8 unk_BCD85;
|
||||
u16 currentFieldBGM;
|
||||
const SNDWaveData *unk_BCD88;
|
||||
void *unk_BCD8C;
|
||||
void *waveOutReverseBuffer;
|
||||
int unk_BCD90;
|
||||
SysTask *unk_BCD94;
|
||||
ChatotCry *chatotCry;
|
||||
|
|
|
|||
|
|
@ -1,19 +0,0 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_02004CB4_H
|
||||
#define POKEPLATINUM_STRUCT_02004CB4_H
|
||||
|
||||
#include <nnsys.h>
|
||||
|
||||
typedef struct {
|
||||
NNSSndWaveOutHandle *unk_00;
|
||||
NNSSndWaveFormat unk_04;
|
||||
const void *unk_08;
|
||||
BOOL unk_0C;
|
||||
int unk_10;
|
||||
int unk_14;
|
||||
int unk_18;
|
||||
int unk_1C;
|
||||
int unk_20;
|
||||
int unk_24;
|
||||
} UnkStruct_02004CB4;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_02004CB4_H
|
||||
|
|
@ -6,7 +6,6 @@
|
|||
#include <nnsys.h>
|
||||
|
||||
#include "sound_system.h"
|
||||
#include "struct_defs/struct_02004CB4.h"
|
||||
|
||||
|
||||
#define FIELD_BGM_BANK_STATE_IDLE 0
|
||||
|
|
@ -15,6 +14,11 @@
|
|||
#define MIN_BGM_VOLUME 0
|
||||
#define MAX_BGM_VOLUME 127
|
||||
|
||||
#define WAVE_OUT_SPEED(SPEED) (int)((SPEED) * 32768)
|
||||
|
||||
#define WAVE_OUT_PAN_LEFT 0
|
||||
#define WAVE_OUT_PAN_CENTER 64
|
||||
#define WAVE_OUT_PAN_RIGHT 127
|
||||
|
||||
enum SoundScene {
|
||||
SOUND_SCENE_NONE = 0,
|
||||
|
|
@ -33,6 +37,19 @@ enum WaveOutChannel {
|
|||
WAVE_OUT_CHANNEL_SECONDARY = 15,
|
||||
};
|
||||
|
||||
typedef struct WaveOutParam {
|
||||
NNSSndWaveOutHandle *handle;
|
||||
NNSSndWaveFormat format;
|
||||
const void *data;
|
||||
BOOL loop;
|
||||
int loopStartSample;
|
||||
int samples;
|
||||
int sampleRate;
|
||||
int volume;
|
||||
int speed;
|
||||
int pan;
|
||||
} WaveOutParam;
|
||||
|
||||
void Sound_SetBGMFixed(u8 fixed);
|
||||
u8 Sound_IsBGMFixed(void);
|
||||
void Sound_SetCurrentBGM(u16 bgmID);
|
||||
|
|
@ -67,14 +84,14 @@ MICResult Sound_StartMicManualSampling(MICSamplingType param0, void *param1, MIC
|
|||
NNSSndWaveOutHandle *Sound_GetWaveOutHandle(enum WaveOutChannel channel);
|
||||
BOOL Sound_AllocateWaveOutChannel(enum WaveOutChannel param0);
|
||||
void Sound_FreeWaveOutChannel(enum WaveOutChannel param0);
|
||||
BOOL sub_02004CB4(UnkStruct_02004CB4 *param0, u32 param1);
|
||||
void sub_02004CF4(u32 param0);
|
||||
BOOL sub_02004D04(u32 param0);
|
||||
void sub_02004D14(u32 param0, u8 param1);
|
||||
void sub_02004D2C(u32 param0, u32 param1);
|
||||
void sub_02004D40(u32 param0, int param1);
|
||||
BOOL sub_02004D78(u16 param0, int param1, int param2, u32 param3, int heapID);
|
||||
void sub_02004E84(u32 param0);
|
||||
BOOL Sound_PlayWaveOut(WaveOutParam *param0, enum WaveOutChannel param1);
|
||||
void Sound_StopWaveOut(enum WaveOutChannel param0);
|
||||
BOOL Sound_IsWaveOutPlaying(enum WaveOutChannel param0);
|
||||
void Sound_SetWaveOutPan(enum WaveOutChannel param0, u8 param1);
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -187,8 +187,8 @@ void *SoundSystem_GetParam(enum SoundSystemParam param)
|
|||
return &soundSys->bgmPaused;
|
||||
case 14:
|
||||
return &soundSys->unk_BCD5E;
|
||||
case 15:
|
||||
return &soundSys->unk_BCD60;
|
||||
case SOUND_SYSTEM_PARAM_WAVE_OUT_REVERSED_PLAYBACK:
|
||||
return &soundSys->waveOutReversedPlayback;
|
||||
case SOUND_SYSTEM_PARAM_WAVE_OUT_PRIMARY_ALLOCATED:
|
||||
return &soundSys->waveOutPrimaryAllocated;
|
||||
case SOUND_SYSTEM_PARAM_WAVE_OUT_SECONDARY_ALLOCATED:
|
||||
|
|
@ -225,8 +225,8 @@ void *SoundSystem_GetParam(enum SoundSystemParam param)
|
|||
return &soundSys->currentFieldBGM;
|
||||
case 33:
|
||||
return &soundSys->unk_BCD88;
|
||||
case 34:
|
||||
return &soundSys->unk_BCD8C;
|
||||
case SOUND_SYSTEM_PARAM_WAVE_OUT_REVERSE_BUFFER:
|
||||
return &soundSys->waveOutReverseBuffer;
|
||||
case 35:
|
||||
return &soundSys->unk_BCD94;
|
||||
case SOUND_SYSTEM_PARAM_CHATOT_CRY:
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "struct_defs/struct_02004CB4.h"
|
||||
#include "struct_defs/struct_020052C8.h"
|
||||
|
||||
#include "communication_system.h"
|
||||
|
|
@ -28,14 +27,14 @@ void sub_02004AD4(u16 param0, int param1);
|
|||
NNSSndWaveOutHandle *Sound_GetWaveOutHandle(enum WaveOutChannel channel);
|
||||
BOOL Sound_AllocateWaveOutChannel(enum WaveOutChannel param0);
|
||||
void Sound_FreeWaveOutChannel(enum WaveOutChannel param0);
|
||||
void sub_02004D14(u32 param0, u8 param1);
|
||||
void sub_02004D2C(u32 param0, u32 param1);
|
||||
void sub_02004D40(u32 param0, int param1);
|
||||
BOOL sub_02004CB4(UnkStruct_02004CB4 *param0, u32 param1);
|
||||
void sub_02004CF4(u32 param0);
|
||||
BOOL sub_02004D04(u32 param0);
|
||||
void sub_02004E84(u32 param0);
|
||||
static void sub_02004E64(u8 *param0, u32 param1);
|
||||
void Sound_SetWaveOutPan(enum WaveOutChannel param0, u8 param1);
|
||||
void Sound_SetWaveOutSpeed(enum WaveOutChannel param0, u32 param1);
|
||||
void Sound_SetWaveOutVolume(enum WaveOutChannel param0, int param1);
|
||||
BOOL Sound_PlayWaveOut(WaveOutParam *param0, enum WaveOutChannel param1);
|
||||
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);
|
||||
|
|
@ -834,163 +833,149 @@ void Sound_FreeWaveOutChannel(enum WaveOutChannel channel)
|
|||
}
|
||||
}
|
||||
|
||||
BOOL sub_02004CB4(UnkStruct_02004CB4 *param0, u32 param1)
|
||||
BOOL Sound_PlayWaveOut(WaveOutParam *param, enum WaveOutChannel channel)
|
||||
{
|
||||
int v0 = NNS_SndWaveOutStart(*param0->unk_00, param0->unk_04, param0->unk_08, param0->unk_0C, param0->unk_10, param0->unk_14, param0->unk_18, param0->unk_1C, param0->unk_20, param0->unk_24);
|
||||
BOOL success = NNS_SndWaveOutStart(
|
||||
*param->handle,
|
||||
param->format,
|
||||
param->data,
|
||||
param->loop,
|
||||
param->loopStartSample,
|
||||
param->samples,
|
||||
param->sampleRate,
|
||||
param->volume,
|
||||
param->speed,
|
||||
param->pan
|
||||
);
|
||||
|
||||
if (v0 == 0) {
|
||||
Sound_FreeWaveOutChannel(param1);
|
||||
if (success == FALSE) {
|
||||
Sound_FreeWaveOutChannel(channel);
|
||||
}
|
||||
|
||||
return v0;
|
||||
return success;
|
||||
}
|
||||
|
||||
void sub_02004CF4(u32 param0)
|
||||
void Sound_StopWaveOut(enum WaveOutChannel channel)
|
||||
{
|
||||
NNS_SndWaveOutStop(*Sound_GetWaveOutHandle(param0));
|
||||
return;
|
||||
NNS_SndWaveOutStop(*Sound_GetWaveOutHandle(channel));
|
||||
}
|
||||
|
||||
BOOL sub_02004D04(u32 param0)
|
||||
BOOL Sound_IsWaveOutPlaying(enum WaveOutChannel channel)
|
||||
{
|
||||
return NNS_SndWaveOutIsPlaying(*Sound_GetWaveOutHandle(param0));
|
||||
return NNS_SndWaveOutIsPlaying(*Sound_GetWaveOutHandle(channel));
|
||||
}
|
||||
|
||||
void sub_02004D14(u32 param0, u8 param1)
|
||||
void Sound_SetWaveOutPan(enum WaveOutChannel channel, u8 pan)
|
||||
{
|
||||
u8 v0;
|
||||
|
||||
if (param1 > 127) {
|
||||
v0 = 127;
|
||||
u8 clampedPan;
|
||||
if (pan > 127) {
|
||||
clampedPan = 127;
|
||||
} else {
|
||||
v0 = param1;
|
||||
clampedPan = pan;
|
||||
}
|
||||
|
||||
NNS_SndWaveOutSetPan(*Sound_GetWaveOutHandle(param0), v0);
|
||||
return;
|
||||
NNS_SndWaveOutSetPan(*Sound_GetWaveOutHandle(channel), clampedPan);
|
||||
}
|
||||
|
||||
void sub_02004D2C(u32 param0, u32 param1)
|
||||
void Sound_SetWaveOutSpeed(enum WaveOutChannel channel, u32 speed)
|
||||
{
|
||||
NNS_SndWaveOutSetSpeed(*Sound_GetWaveOutHandle(param0), param1);
|
||||
return;
|
||||
NNS_SndWaveOutSetSpeed(*Sound_GetWaveOutHandle(channel), speed);
|
||||
}
|
||||
|
||||
void sub_02004D40(u32 param0, int param1)
|
||||
void Sound_SetWaveOutVolume(enum WaveOutChannel channel, int volume)
|
||||
{
|
||||
if (sub_02036314() == 1) {
|
||||
NNS_SndWaveOutSetVolume(*Sound_GetWaveOutHandle(param0), (param1 / 5));
|
||||
NNS_SndWaveOutSetVolume(*Sound_GetWaveOutHandle(channel), volume / 5);
|
||||
} else {
|
||||
NNS_SndWaveOutSetVolume(*Sound_GetWaveOutHandle(param0), param1);
|
||||
NNS_SndWaveOutSetVolume(*Sound_GetWaveOutHandle(channel), volume);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
BOOL sub_02004D78(u16 param0, int param1, int param2, u32 param3, int heapID)
|
||||
BOOL Sound_PlayWaveOutReversed(u16 waveArcID, int volume, int pan, enum WaveOutChannel channel, int heapID)
|
||||
{
|
||||
u8 *v0;
|
||||
const NNSSndArcWaveArcInfo *v1;
|
||||
u32 v2;
|
||||
int v3, v4;
|
||||
SoundSystem *v5 = SoundSystem_Get();
|
||||
void **v6 = SoundSystem_GetParam(34);
|
||||
(void)SoundSystem_Get();
|
||||
void **reverseBuffer = SoundSystem_GetParam(SOUND_SYSTEM_PARAM_WAVE_OUT_REVERSE_BUFFER);
|
||||
|
||||
if ((param3 != 14) && (param3 != 15)) {
|
||||
if (channel != WAVE_OUT_CHANNEL_PRIMARY && channel != WAVE_OUT_CHANNEL_SECONDARY) {
|
||||
GF_ASSERT(FALSE);
|
||||
}
|
||||
|
||||
v1 = NNS_SndArcGetWaveArcInfo(param0);
|
||||
|
||||
if (v1 == NULL) {
|
||||
const NNSSndArcWaveArcInfo *info = NNS_SndArcGetWaveArcInfo(waveArcID);
|
||||
if (info == NULL) {
|
||||
GF_ASSERT(FALSE);
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
v2 = NNS_SndArcGetFileSize(v1->fileId);
|
||||
|
||||
if (v2 == 0) {
|
||||
u32 fileSize = NNS_SndArcGetFileSize(info->fileId);
|
||||
if (fileSize == 0) {
|
||||
GF_ASSERT(FALSE);
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (param3 == 14) {
|
||||
*v6 = Heap_AllocFromHeap(heapID, v2);
|
||||
|
||||
if (*v6 == NULL) {
|
||||
if (channel == WAVE_OUT_CHANNEL_PRIMARY) {
|
||||
*reverseBuffer = Heap_AllocFromHeap(heapID, fileSize);
|
||||
if (*reverseBuffer == NULL) {
|
||||
GF_ASSERT(FALSE);
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
memset(*v6, 0, v2);
|
||||
memset(*reverseBuffer, 0, fileSize);
|
||||
|
||||
v3 = NNS_SndArcReadFile(v1->fileId, *v6, v2, 0);
|
||||
|
||||
if (v3 == -1) {
|
||||
if (NNS_SndArcReadFile(info->fileId, *reverseBuffer, fileSize, 0) == -1) {
|
||||
GF_ASSERT(FALSE);
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
sub_02004E64(*v6, v2);
|
||||
Sound_Impl_ReverseBuffer(*reverseBuffer, fileSize);
|
||||
}
|
||||
|
||||
{
|
||||
UnkStruct_02004CB4 v7;
|
||||
WaveOutParam param;
|
||||
param.handle = Sound_GetWaveOutHandle(channel);
|
||||
param.format = NNS_SND_WAVE_FORMAT_PCM8;
|
||||
param.data = *reverseBuffer;
|
||||
param.loop = FALSE;
|
||||
param.loopStartSample = 0;
|
||||
param.samples = fileSize;
|
||||
param.sampleRate = 13379;
|
||||
param.volume = volume;
|
||||
param.speed = WAVE_OUT_SPEED(0.75);
|
||||
param.pan = pan;
|
||||
|
||||
v7.unk_00 = Sound_GetWaveOutHandle(param3);
|
||||
v7.unk_04 = NNS_SND_WAVE_FORMAT_PCM8;
|
||||
v7.unk_08 = *v6;
|
||||
v7.unk_0C = 0;
|
||||
v7.unk_10 = 0;
|
||||
v7.unk_14 = v2;
|
||||
v7.unk_18 = 13379;
|
||||
v7.unk_1C = param1;
|
||||
v7.unk_20 = 24576;
|
||||
v7.unk_24 = param2;
|
||||
BOOL result = Sound_PlayWaveOut(¶m, channel);
|
||||
|
||||
v4 = sub_02004CB4(&v7, param3);
|
||||
Sound_SetWaveOutVolume(channel, volume);
|
||||
|
||||
sub_02004D40(param3, param1);
|
||||
}
|
||||
u8 *reversedPlayback = SoundSystem_GetParam(SOUND_SYSTEM_PARAM_WAVE_OUT_REVERSED_PLAYBACK);
|
||||
*reversedPlayback = TRUE;
|
||||
|
||||
v0 = SoundSystem_GetParam(15);
|
||||
*v0 = 1;
|
||||
|
||||
return v4;
|
||||
return result;
|
||||
}
|
||||
|
||||
static void sub_02004E64(u8 *param0, u32 param1)
|
||||
static void Sound_Impl_ReverseBuffer(u8 *buffer, u32 size)
|
||||
{
|
||||
int v0;
|
||||
u8 v1;
|
||||
|
||||
for (v0 = 0; v0 < (param1 / 2); v0++) {
|
||||
v1 = param0[v0];
|
||||
param0[v0] = param0[param1 - 1 - v0];
|
||||
param0[param1 - 1 - v0] = v1;
|
||||
for (int i = 0; i < (size / 2); i++) {
|
||||
u8 tmp = buffer[i];
|
||||
buffer[i] = buffer[size - 1 - i];
|
||||
buffer[size - 1 - i] = tmp;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void sub_02004E84(u32 param0)
|
||||
void Sound_StopWaveOutReversed(enum WaveOutChannel channel)
|
||||
{
|
||||
SoundSystem *v0 = SoundSystem_Get();
|
||||
u8 *v1 = SoundSystem_GetParam(15);
|
||||
void **v2 = SoundSystem_GetParam(34);
|
||||
(void)SoundSystem_Get();
|
||||
u8 *reversedPlaybackEnabled = SoundSystem_GetParam(SOUND_SYSTEM_PARAM_WAVE_OUT_REVERSED_PLAYBACK);
|
||||
void **reverseBuffer = SoundSystem_GetParam(SOUND_SYSTEM_PARAM_WAVE_OUT_REVERSE_BUFFER);
|
||||
|
||||
if ((param0 != 14) && (param0 != 15)) {
|
||||
if (channel != WAVE_OUT_CHANNEL_PRIMARY && channel != WAVE_OUT_CHANNEL_SECONDARY) {
|
||||
GF_ASSERT(FALSE);
|
||||
}
|
||||
|
||||
sub_02004CF4(param0);
|
||||
Sound_StopWaveOut(channel);
|
||||
|
||||
if (*v1 == 1) {
|
||||
*v1 = 0;
|
||||
Heap_FreeToHeap(*v2);
|
||||
if (*reversedPlaybackEnabled == TRUE) {
|
||||
*reversedPlaybackEnabled = FALSE;
|
||||
Heap_FreeToHeap(*reverseBuffer);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
BOOL sub_02004EC0(void)
|
||||
|
|
|
|||
|
|
@ -15,6 +15,9 @@
|
|||
#include "unk_020041CC.h"
|
||||
#include "unk_02006224.h"
|
||||
|
||||
#define WAVE_OUT_SPEED_HYPERVOICE_1 (WAVE_OUT_SPEED(1.046875))
|
||||
#define WAVE_OUT_SPEED_UPROAR_1 (WAVE_OUT_SPEED(0.8125))
|
||||
|
||||
typedef struct {
|
||||
int unk_00;
|
||||
SysTask *unk_04;
|
||||
|
|
@ -216,11 +219,11 @@ void Sound_StopAll(void)
|
|||
NNS_SndPlayerStopSeqAll(0);
|
||||
|
||||
if (*v0 == 1) {
|
||||
sub_02004CF4(14);
|
||||
Sound_StopWaveOut(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
}
|
||||
|
||||
if (*v1 == 1) {
|
||||
sub_02004CF4(15);
|
||||
Sound_StopWaveOut(WAVE_OUT_CHANNEL_SECONDARY);
|
||||
}
|
||||
|
||||
SoundSystem_SetState(SOUND_SYSTEM_STATE_IDLE);
|
||||
|
|
@ -242,11 +245,11 @@ void sub_020056D4(void)
|
|||
sub_0200592C(0);
|
||||
|
||||
if (*v1 == 1) {
|
||||
sub_02004CF4(14);
|
||||
Sound_StopWaveOut(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
}
|
||||
|
||||
if (*v2 == 1) {
|
||||
sub_02004CF4(15);
|
||||
Sound_StopWaveOut(WAVE_OUT_CHANNEL_SECONDARY);
|
||||
}
|
||||
|
||||
return;
|
||||
|
|
@ -390,12 +393,12 @@ void sub_0200592C(int param0)
|
|||
NNS_SndPlayerStopSeq(SoundSystem_GetSoundHandle(8), param0);
|
||||
|
||||
if (*v0 == 1) {
|
||||
sub_02004E84(14);
|
||||
Sound_StopWaveOutReversed(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
Sound_FreeWaveOutChannel(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
}
|
||||
|
||||
if (*v1 == 1) {
|
||||
sub_02004E84(15);
|
||||
Sound_StopWaveOutReversed(WAVE_OUT_CHANNEL_SECONDARY);
|
||||
Sound_FreeWaveOutChannel(WAVE_OUT_CHANNEL_SECONDARY);
|
||||
}
|
||||
|
||||
|
|
@ -413,11 +416,11 @@ int sub_0200598C(void)
|
|||
u8 *v3 = SoundSystem_GetParam(46);
|
||||
|
||||
if (*v0 == 1) {
|
||||
return sub_02004D04(14);
|
||||
return Sound_IsWaveOutPlaying(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
}
|
||||
|
||||
if (*v1 == 1) {
|
||||
return sub_02004D04(15);
|
||||
return Sound_IsWaveOutPlaying(WAVE_OUT_CHANNEL_SECONDARY);
|
||||
}
|
||||
|
||||
return Sound_GetNumberOfPlayingSequencesForPlayer(0);
|
||||
|
|
@ -450,9 +453,9 @@ BOOL Sound_PlayPokemonCryEx(enum PokemonCryMod cryMod, u16 species, int param2,
|
|||
}
|
||||
|
||||
if (param2 < 0) {
|
||||
v0 = 64 + (param2 / 2);
|
||||
v0 = WAVE_OUT_PAN_CENTER + (param2 / 2);
|
||||
} else {
|
||||
v0 = 64 + (param2 / 2);
|
||||
v0 = WAVE_OUT_PAN_CENTER + (param2 / 2);
|
||||
}
|
||||
|
||||
v1 = volume - 30;
|
||||
|
|
@ -465,12 +468,12 @@ BOOL Sound_PlayPokemonCryEx(enum PokemonCryMod cryMod, u16 species, int param2,
|
|||
*v10 = 0;
|
||||
|
||||
if (*v8 == 1) {
|
||||
sub_02004E84(14);
|
||||
Sound_StopWaveOutReversed(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
Sound_FreeWaveOutChannel(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
}
|
||||
|
||||
if (*v9 == 1) {
|
||||
sub_02004E84(15);
|
||||
Sound_StopWaveOutReversed(WAVE_OUT_CHANNEL_SECONDARY);
|
||||
Sound_FreeWaveOutChannel(WAVE_OUT_CHANNEL_SECONDARY);
|
||||
}
|
||||
|
||||
|
|
@ -489,8 +492,8 @@ BOOL Sound_PlayPokemonCryEx(enum PokemonCryMod cryMod, u16 species, int param2,
|
|||
sub_02005E4C(species, 1, volume);
|
||||
} else {
|
||||
if (*v8 == 1) {
|
||||
sub_02004D14(14, v0);
|
||||
sub_02004D40(14, volume);
|
||||
Sound_SetWaveOutPan(WAVE_OUT_CHANNEL_PRIMARY, v0);
|
||||
Sound_SetWaveOutVolume(WAVE_OUT_CHANNEL_PRIMARY, volume);
|
||||
} else {
|
||||
sub_02004F94(1, 0xffff, param2);
|
||||
sub_02005E4C(species, 1, volume);
|
||||
|
|
@ -537,12 +540,12 @@ BOOL Sound_PlayPokemonCryEx(enum PokemonCryMod cryMod, u16 species, int param2,
|
|||
break;
|
||||
case POKECRY_HYPERVOICE_1:
|
||||
v5 = Sound_AllocateWaveOutChannel(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
v5 = sub_02004D78(species, volume, v0, 14, heapID);
|
||||
sub_02004D14(14, v0);
|
||||
v5 = Sound_PlayWaveOutReversed(species, volume, v0, WAVE_OUT_CHANNEL_PRIMARY, heapID);
|
||||
Sound_SetWaveOutPan(WAVE_OUT_CHANNEL_PRIMARY, v0);
|
||||
sub_02005E64(15, heapID);
|
||||
sub_02004D2C(14, (32768 + 1536));
|
||||
Sound_SetWaveOutSpeed(WAVE_OUT_CHANNEL_PRIMARY, WAVE_OUT_SPEED_HYPERVOICE_1);
|
||||
v7 = sub_02006120(species, -64, v1, v0, heapID);
|
||||
sub_02004D2C(15, (32768 + 1536));
|
||||
Sound_SetWaveOutSpeed(WAVE_OUT_CHANNEL_SECONDARY, WAVE_OUT_SPEED_HYPERVOICE_1);
|
||||
break;
|
||||
case POKECRY_FAINT:
|
||||
v4 = Sound_PlayPokemonCry(species, form);
|
||||
|
|
@ -575,10 +578,10 @@ BOOL Sound_PlayPokemonCryEx(enum PokemonCryMod cryMod, u16 species, int param2,
|
|||
break;
|
||||
case POKECRY_UPROAR_1:
|
||||
v5 = Sound_AllocateWaveOutChannel(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
v5 = sub_02004D78(species, volume, v0, 14, heapID);
|
||||
sub_02004D14(14, v0);
|
||||
v5 = Sound_PlayWaveOutReversed(species, volume, v0, WAVE_OUT_CHANNEL_PRIMARY, heapID);
|
||||
Sound_SetWaveOutPan(WAVE_OUT_CHANNEL_PRIMARY, v0);
|
||||
sub_02005E64(13, heapID);
|
||||
sub_02004D2C(14, (32768 - 6144));
|
||||
Sound_SetWaveOutSpeed(WAVE_OUT_CHANNEL_PRIMARY, WAVE_OUT_SPEED_UPROAR_1);
|
||||
break;
|
||||
case POKECRY_UPROAR_2:
|
||||
v4 = Sound_PlayPokemonCry(species, form);
|
||||
|
|
@ -671,12 +674,12 @@ static void sub_02005EB0(SysTask *param0, void *param1)
|
|||
sub_0200592C(0);
|
||||
|
||||
if (*v0 == 1) {
|
||||
sub_02004E84(14);
|
||||
Sound_StopWaveOutReversed(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
Sound_FreeWaveOutChannel(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
}
|
||||
|
||||
if (*v1 == 1) {
|
||||
sub_02004E84(15);
|
||||
Sound_StopWaveOutReversed(WAVE_OUT_CHANNEL_SECONDARY);
|
||||
Sound_FreeWaveOutChannel(WAVE_OUT_CHANNEL_SECONDARY);
|
||||
}
|
||||
|
||||
|
|
@ -824,7 +827,7 @@ static BOOL sub_02006120(u16 param0, s8 param1, int param2, int param3, int heap
|
|||
*v1 = 1;
|
||||
|
||||
v0 = Sound_AllocateWaveOutChannel(WAVE_OUT_CHANNEL_SECONDARY);
|
||||
v0 = sub_02004D78(param0, param2, param3, 15, heapID);
|
||||
v0 = Sound_PlayWaveOutReversed(param0, param2, param3, WAVE_OUT_CHANNEL_SECONDARY, heapID);
|
||||
|
||||
return v0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
#include "constants/species.h"
|
||||
|
||||
#include "struct_defs/chatot_cry.h"
|
||||
#include "struct_defs/struct_02004CB4.h"
|
||||
|
||||
#include "math.h"
|
||||
#include "sound_system.h"
|
||||
|
|
@ -29,7 +28,7 @@ BOOL CheckMicRecordingStatus(void)
|
|||
|
||||
if (*v1 == 1) {
|
||||
if (*v0 == 1) {
|
||||
if (sub_02004D04(14) == 0) {
|
||||
if (Sound_IsWaveOutPlaying(WAVE_OUT_CHANNEL_PRIMARY) == 0) {
|
||||
ResetMicStatusFlags();
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -87,21 +86,21 @@ BOOL ProcessAudioInput(const ChatotCry *cry, u32 param1, int volume, int pan)
|
|||
ProcessChatotCryAudioData(v3, GetChatotCryAudioBuffer(cry));
|
||||
|
||||
{
|
||||
UnkStruct_02004CB4 v5;
|
||||
WaveOutParam v5;
|
||||
|
||||
v5.unk_00 = Sound_GetWaveOutHandle(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
v5.unk_04 = NNS_SND_WAVE_FORMAT_PCM8;
|
||||
v5.unk_08 = sub_02005014();
|
||||
v5.unk_0C = 0;
|
||||
v5.unk_10 = 0;
|
||||
v5.unk_14 = (2000 * 1);
|
||||
v5.unk_18 = 2000;
|
||||
v5.unk_1C = volume;
|
||||
v5.unk_20 = (32768 + v0);
|
||||
v5.unk_24 = v2;
|
||||
v5.handle = Sound_GetWaveOutHandle(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
v5.format = NNS_SND_WAVE_FORMAT_PCM8;
|
||||
v5.data = sub_02005014();
|
||||
v5.loop = FALSE;
|
||||
v5.loopStartSample = 0;
|
||||
v5.samples = (2000 * 1);
|
||||
v5.sampleRate = 2000;
|
||||
v5.volume = volume;
|
||||
v5.speed = WAVE_OUT_SPEED(1.0) + v0;
|
||||
v5.pan = v2;
|
||||
|
||||
v1 = sub_02004CB4(&v5, 14);
|
||||
sub_02004D40(14, volume);
|
||||
v1 = Sound_PlayWaveOut(&v5, WAVE_OUT_CHANNEL_PRIMARY);
|
||||
Sound_SetWaveOutVolume(WAVE_OUT_CHANNEL_PRIMARY, volume);
|
||||
}
|
||||
|
||||
*v4 = 1;
|
||||
|
|
@ -116,7 +115,7 @@ void ResetMicStatusFlags(void)
|
|||
u8 *v1 = SoundSystem_GetParam(30);
|
||||
|
||||
if (*v0 == 1) {
|
||||
sub_02004E84(14);
|
||||
Sound_StopWaveOutReversed(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
Sound_FreeWaveOutChannel(WAVE_OUT_CHANNEL_PRIMARY);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user