mirror of
https://github.com/tildearrow/furnace.git
synced 2024-12-04 02:07:27 +00:00
Sync with master
This commit is contained in:
parent
5af02d068e
commit
81f812b216
4 changed files with 23 additions and 36 deletions
|
@ -45,12 +45,11 @@ void es5505_core::tick()
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
// copy output
|
// copy output
|
||||||
m_output[i] = m_output_temp[i];
|
m_output[i].copy_output(m_output_temp[i]);
|
||||||
m_output_latch[i] = m_ch[i];
|
|
||||||
m_output_temp[i].reset();
|
|
||||||
// clamp to 16 bit (upper 5 bits are overflow
|
// clamp to 16 bit (upper 5 bits are overflow
|
||||||
// guard bits)
|
// guard bits)
|
||||||
m_output_latch[i].clamp16();
|
m_output_latch[i].clamp16(m_ch[i]);
|
||||||
|
m_output_temp[i].reset();
|
||||||
// set signed
|
// set signed
|
||||||
if (m_output_latch[i].left() < 0)
|
if (m_output_latch[i].left() < 0)
|
||||||
{
|
{
|
||||||
|
@ -155,7 +154,7 @@ void es5505_core::tick_perf()
|
||||||
// output
|
// output
|
||||||
for (int c = 0; c < 4; c++)
|
for (int c = 0; c < 4; c++)
|
||||||
{
|
{
|
||||||
m_output[c] = m_ch[c];
|
m_output[c].clamp16(m_ch[c]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// update
|
// update
|
||||||
|
|
|
@ -31,7 +31,13 @@ class es5505_core : public es550x_shared_core
|
||||||
{
|
{
|
||||||
m_left = 0;
|
m_left = 0;
|
||||||
m_right = 0;
|
m_right = 0;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
inline void copy_output(output_t &src)
|
||||||
|
{
|
||||||
|
m_left = src.left();
|
||||||
|
m_right = src.right();
|
||||||
|
}
|
||||||
|
|
||||||
inline s32 clamp16(s32 in) { return clamp(in, -0x8000, 0x7fff); }
|
inline s32 clamp16(s32 in) { return clamp(in, -0x8000, 0x7fff); }
|
||||||
|
|
||||||
|
@ -76,18 +82,6 @@ class es5505_core : public es550x_shared_core
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
output_t &operator=(output_t &src)
|
|
||||||
{
|
|
||||||
clamp16(src);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
output_t &operator=(s32 val)
|
|
||||||
{
|
|
||||||
m_left = m_right = clamp16(val);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
output_t &operator>>(s32 shift)
|
output_t &operator>>(s32 shift)
|
||||||
{
|
{
|
||||||
m_left >>= shift;
|
m_left >>= shift;
|
||||||
|
|
|
@ -63,11 +63,11 @@ void es5506_core::tick()
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
// copy output
|
// copy output
|
||||||
m_output[i] = m_output_temp[i];
|
m_output[i].copy_output(m_output_temp[i]);
|
||||||
m_output_latch[i] = m_ch[i];
|
|
||||||
m_output_temp[i].reset();
|
|
||||||
// clamp to 20 bit (upper 3 bits are
|
// clamp to 20 bit (upper 3 bits are
|
||||||
// overflow guard bits)
|
// overflow guard bits)
|
||||||
|
m_output_latch[i].clamp20(m_ch[i]);
|
||||||
|
m_output_temp[i].reset();
|
||||||
m_output_latch[i].clamp20();
|
m_output_latch[i].clamp20();
|
||||||
// set signed
|
// set signed
|
||||||
if (m_output_latch[i].left() < 0)
|
if (m_output_latch[i].left() < 0)
|
||||||
|
@ -202,7 +202,7 @@ void es5506_core::tick_perf()
|
||||||
{
|
{
|
||||||
for (int c = 0; c < 6; c++)
|
for (int c = 0; c < 6; c++)
|
||||||
{
|
{
|
||||||
m_output[c] = m_ch[c] >> output_bits;
|
m_output[c].clamp20(m_ch[c] >> output_bits);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -210,7 +210,7 @@ void es5506_core::tick_perf()
|
||||||
{
|
{
|
||||||
for (int c = 0; c < 6; c++)
|
for (int c = 0; c < 6; c++)
|
||||||
{
|
{
|
||||||
m_output[c] = 0;
|
m_output[c].reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,13 @@ class es5506_core : public es550x_shared_core
|
||||||
{
|
{
|
||||||
m_left = 0;
|
m_left = 0;
|
||||||
m_right = 0;
|
m_right = 0;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
inline void copy_output(output_t &src)
|
||||||
|
{
|
||||||
|
m_left = src.left();
|
||||||
|
m_right = src.right();
|
||||||
|
}
|
||||||
|
|
||||||
inline s32 clamp20(s32 in) { return clamp(in, -0x80000, 0x7ffff); }
|
inline s32 clamp20(s32 in) { return clamp(in, -0x80000, 0x7ffff); }
|
||||||
|
|
||||||
|
@ -76,18 +82,6 @@ class es5506_core : public es550x_shared_core
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
output_t &operator=(output_t &src)
|
|
||||||
{
|
|
||||||
clamp20(src);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
output_t &operator=(s32 val)
|
|
||||||
{
|
|
||||||
m_left = m_right = clamp20(val);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
output_t &operator>>(s32 shift)
|
output_t &operator>>(s32 shift)
|
||||||
{
|
{
|
||||||
m_left >>= shift;
|
m_left >>= shift;
|
||||||
|
|
Loading…
Reference in a new issue