ES5506: one more percent off

This commit is contained in:
tildearrow 2023-02-11 23:43:19 -05:00
parent 50431b08b0
commit 78d3f9d97f
5 changed files with 16 additions and 7 deletions

View file

@ -99,7 +99,7 @@ void es5506_core::voice_t::tick(u8 voice)
if (m_alu.busy())
{
fetch(0);
if ((m_alu.m_last_accum&(~m_alu.m_fraction))!=(m_alu.m_accum&(~m_alu.m_fraction))) fetch(0);
m_filter.tick(m_alu.interpolation());
// Send to output
m_output[0] = m_mute ? 0 : volume_calc(m_lvol, (short)m_filter.o4_1());

View file

@ -169,6 +169,7 @@ class es550x_shared_core : public vgsound_emu_core
, m_start(0)
, m_end(0)
, m_accum(0)
, m_last_accum(0)
, m_sample{0,0}
{
}
@ -268,7 +269,7 @@ class es550x_shared_core : public vgsound_emu_core
inline s32 sample(u8 slot) { return m_sample[slot & 1]; }
private:
public:
class es550x_alu_cr_t : public vgsound_emu_core
{
public:
@ -370,6 +371,7 @@ class es550x_shared_core : public vgsound_emu_core
// 20 integer, 9 fraction for ES5504/ES5505
// 21 integer, 11 fraction for ES5506
u32 m_accum = 0;
u32 m_last_accum = 0;
// Samples
s32 m_sample[2];
};

View file

@ -16,6 +16,7 @@ void es550x_shared_core::es550x_voice_t::es550x_alu_t::reset()
m_start = 0;
m_end = 0;
m_accum = 0;
m_last_accum=0;
m_sample[0] = m_sample[1] = 0;
}
@ -23,6 +24,7 @@ bool es550x_shared_core::es550x_voice_t::es550x_alu_t::busy() { return !(m_cr.m_
bool es550x_shared_core::es550x_voice_t::es550x_alu_t::tick()
{
m_last_accum = m_accum;
if (m_cr.dir())
{
m_accum -= m_fc;