summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/sound/es5506.cpp
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2022-11-01 15:03:04 -0400
committer AJR <ajrhacker@users.noreply.github.com>2022-11-01 15:06:47 -0400
commit4df2f9d2f904073cd31d4d5db65cdb0d23270aac (patch)
treeb5daa04126fe177061506e467cd312873509b748 /src/devices/sound/es5506.cpp
parent7d9ccfa4261a4a836890b9aac9fa81109fd68598 (diff)
coretmpl.h: Add utility function for sign-extending values of arbitrary width
* cpu/ccpu: Simplify code for right-shifting 12-bit values arithmetically * konami/3dom2_te.cpp: Fix probable copy-and-paste error
Diffstat (limited to 'src/devices/sound/es5506.cpp')
-rw-r--r--src/devices/sound/es5506.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/devices/sound/es5506.cpp b/src/devices/sound/es5506.cpp
index 3ea90a97261..479fbbad48b 100644
--- a/src/devices/sound/es5506.cpp
+++ b/src/devices/sound/es5506.cpp
@@ -1208,32 +1208,32 @@ inline void es5506_device::reg_write_high(es550x_voice *voice, offs_t offset, u3
break;
case 0x20/8: /* O4(n-1) */
- voice->o4n1 = (s32)(data << 14) >> 14;
+ voice->o4n1 = util::sext(data, 18);
LOG("voice %d, O4(n-1)=%05x\n", m_current_page & 0x1f, voice->o4n1 & 0x3ffff);
break;
case 0x28/8: /* O3(n-1) */
- voice->o3n1 = (s32)(data << 14) >> 14;
+ voice->o3n1 = util::sext(data, 18);
LOG("voice %d, O3(n-1)=%05x\n", m_current_page & 0x1f, voice->o3n1 & 0x3ffff);
break;
case 0x30/8: /* O3(n-2) */
- voice->o3n2 = (s32)(data << 14) >> 14;
+ voice->o3n2 = util::sext(data, 18);
LOG("voice %d, O3(n-2)=%05x\n", m_current_page & 0x1f, voice->o3n2 & 0x3ffff);
break;
case 0x38/8: /* O2(n-1) */
- voice->o2n1 = (s32)(data << 14) >> 14;
+ voice->o2n1 = util::sext(data, 18);
LOG("voice %d, O2(n-1)=%05x\n", m_current_page & 0x1f, voice->o2n1 & 0x3ffff);
break;
case 0x40/8: /* O2(n-2) */
- voice->o2n2 = (s32)(data << 14) >> 14;
+ voice->o2n2 = util::sext(data, 18);
LOG("voice %d, O2(n-2)=%05x\n", m_current_page & 0x1f, voice->o2n2 & 0x3ffff);
break;
case 0x48/8: /* O1(n-1) */
- voice->o1n1 = (s32)(data << 14) >> 14;
+ voice->o1n1 = util::sext(data, 18);
LOG("voice %d, O1(n-1)=%05x\n", m_current_page & 0x1f, voice->o1n1 & 0x3ffff);
break;