summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/ymfm/src/ymfm_pcm.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/ymfm/src/ymfm_pcm.cpp')
-rw-r--r--3rdparty/ymfm/src/ymfm_pcm.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/3rdparty/ymfm/src/ymfm_pcm.cpp b/3rdparty/ymfm/src/ymfm_pcm.cpp
index 3acd59e2a4d..cb3402e6ad7 100644
--- a/3rdparty/ymfm/src/ymfm_pcm.cpp
+++ b/3rdparty/ymfm/src/ymfm_pcm.cpp
@@ -425,7 +425,7 @@ void pcm_channel::load_wavetable()
// for some reason that is unclear
m_endpos = read_pcm(wavheader + 5) << 8;
m_endpos |= read_pcm(wavheader + 6);
- m_endpos = -m_endpos << 16;
+ m_endpos = -int32_t(m_endpos) << 16;
// remaining data values set registers
m_owner.write(0x80 + m_choffs, read_pcm(wavheader + 7));
@@ -560,9 +560,9 @@ int16_t pcm_channel::fetch_sample() const
// 12-bit PCM: assemble out of half of 3 bytes
addr += (pos / 2) * 3;
if ((pos & 1) == 0)
- return (read_pcm(addr + 0) << 8) | ((read_pcm(addr + 1) << 0) & 0xf0);
+ return (read_pcm(addr + 0) << 8) | ((read_pcm(addr + 1) << 4) & 0xf0);
else
- return (read_pcm(addr + 2) << 8) | ((read_pcm(addr + 1) << 4) & 0xf0);
+ return (read_pcm(addr + 2) << 8) | ((read_pcm(addr + 1) << 0) & 0xf0);
}