Merge pull request #1508 from skidau/emu-wiimote-speaker-sample-rate-zero

Ignore the emulated wiimotes speaker data if the sample rate is set at 0hz
This commit is contained in:
skidau 2014-11-09 17:58:34 +11:00
commit c34c231df1
2 changed files with 15 additions and 15 deletions

View File

@ -107,21 +107,22 @@ void Wiimote::SpeakerData(wm_speaker_data* sd)
// Speaker Pan // Speaker Pan
unsigned int vol = (unsigned int)(m_options->settings[4]->GetValue() * 100); unsigned int vol = (unsigned int)(m_options->settings[4]->GetValue() * 100);
float amp = 10.0f; // Boost the speaker volume relative to the rest of the game audio
unsigned int sample_rate = sample_rate_dividend / Common::swap16(m_reg_speaker.sample_rate); if (m_reg_speaker.sample_rate)
float speaker_volume_ratio = (float)m_reg_speaker.volume / volume_divisor; {
unsigned int left_volume = (unsigned int)((128 + vol) * speaker_volume_ratio * amp); unsigned int sample_rate = sample_rate_dividend / m_reg_speaker.sample_rate;
unsigned int right_volume = (unsigned int)((128 - vol) * speaker_volume_ratio * amp); float speaker_volume_ratio = (float)m_reg_speaker.volume / volume_divisor;
unsigned int left_volume = (unsigned int)((128 + vol) * speaker_volume_ratio);
unsigned int right_volume = (unsigned int)((128 - vol) * speaker_volume_ratio);
if (left_volume > 255) if (left_volume > 255)
left_volume = 255; left_volume = 255;
if (right_volume > 255) if (right_volume > 255)
right_volume = 255; right_volume = 255;
g_sound_stream->GetMixer()->SetWiimoteSpeakerVolume(left_volume, right_volume);
g_sound_stream->GetMixer()->PushWiimoteSpeakerSamples(samples.get(), sd->length, sample_rate);
g_sound_stream->GetMixer()->SetWiimoteSpeakerVolume(left_volume, right_volume);
g_sound_stream->GetMixer()->PushWiimoteSpeakerSamples(samples.get(), sd->length, sample_rate);
}
#ifdef WIIMOTE_SPEAKER_DUMP #ifdef WIIMOTE_SPEAKER_DUMP
static int num = 0; static int num = 0;

View File

@ -24,10 +24,9 @@ namespace WiimoteReal
{ {
class Wiimote; class Wiimote;
} }
namespace WiimoteEmu namespace WiimoteEmu
{ {
#pragma pack(push,1)
struct ReportFeatures struct ReportFeatures
{ {
u8 core, accel, ir, ext, size; u8 core, accel, ir, ext, size;
@ -197,7 +196,6 @@ private:
wiimote_key m_ext_key; wiimote_key m_ext_key;
u8 m_eeprom[WIIMOTE_EEPROM_SIZE]; u8 m_eeprom[WIIMOTE_EEPROM_SIZE];
struct MotionPlusReg struct MotionPlusReg
{ {
u8 unknown[0xF0]; u8 unknown[0xF0];
@ -233,6 +231,7 @@ private:
u8 play; u8 play;
u8 unk_9; u8 unk_9;
} m_reg_speaker; } m_reg_speaker;
#pragma pack(pop)
}; };
void Spy(Wiimote* wm_, const void* data_, size_t size_); void Spy(Wiimote* wm_, const void* data_, size_t size_);