diff options
Diffstat (limited to '3rdparty/ymfm/src/ymfm_pcm.cpp')
-rw-r--r-- | 3rdparty/ymfm/src/ymfm_pcm.cpp | 6 |
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); } |