From 523b96e818241f77e22d765cbc5bf151dd5fe406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Banaan=20Ananas?= Date: Tue, 17 Apr 2012 10:44:28 +0000 Subject: [PATCH] 3bit adpcm pitch was wrong --- src/emu/sound/i5000.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/emu/sound/i5000.c b/src/emu/sound/i5000.c index d5003e9383e..b8cd9aca730 100644 --- a/src/emu/sound/i5000.c +++ b/src/emu/sound/i5000.c @@ -113,14 +113,14 @@ void i5000snd_device::sound_stream_update(sound_stream &stream, stream_sample_t adpcm_data = m_channels[ch].m_adpcm.clock(adpcm_data & m_channels[ch].shift_mask); - m_channels[ch].output_r = adpcm_data * m_channels[ch].vol_r; - m_channels[ch].output_l = adpcm_data * m_channels[ch].vol_l; + m_channels[ch].output_r = adpcm_data * m_channels[ch].vol_r / 16; + m_channels[ch].output_l = adpcm_data * m_channels[ch].vol_l / 16; mix_r += m_channels[ch].output_r; mix_l += m_channels[ch].output_l; } - outputs[0][i] = mix_r / (16*8); - outputs[1][i] = mix_l / (16*8); + outputs[0][i] = mix_r / 16; + outputs[1][i] = mix_l / 16; } } @@ -178,7 +178,7 @@ void i5000snd_device::write_reg16(UINT8 reg, UINT16 data) // 3-bit ADPCM case 0x0104: case 0x0304: // same? - m_channels[ch].freq_min = 0x100 * (4.0 / 3.0); + m_channels[ch].freq_min = 0x140; m_channels[ch].shift_amount = 3; m_channels[ch].shift_mask = 0xe; break; @@ -198,8 +198,6 @@ void i5000snd_device::write_reg16(UINT8 reg, UINT16 data) m_channels[ch].freq_timer = 0; m_channels[ch].shift_pos = 0; - m_channels[ch].output_l = 0; - m_channels[ch].output_r = 0; m_channels[ch].m_adpcm.reset(); m_channels[ch].is_playing = read_sample(ch);