diff options
Diffstat (limited to 'src/emu/sound/es5503.c')
-rw-r--r-- | src/emu/sound/es5503.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/emu/sound/es5503.c b/src/emu/sound/es5503.c index fd2d52c4545..b1881412da2 100644 --- a/src/emu/sound/es5503.c +++ b/src/emu/sound/es5503.c @@ -128,9 +128,10 @@ void es5503_device::halt_osc(int onum, int type, UINT32 *accumulator, int resshi *accumulator = altram << resshift; } + int omode = (pPartner->control>>1) & 3; // if swap mode, start the partner - if (mode == MODE_SWAP) + if ((mode == MODE_SWAP) || (omode == MODE_SWAP)) { pPartner->control &= ~1; // clear the halt bit pPartner->accumulator = 0; // and make sure it starts from the top (does this also need phase preservation?) @@ -183,9 +184,9 @@ void es5503_device::sound_stream_update(sound_stream &stream, stream_sample_t ** // channel strobe is always valid when reading; this allows potentially banking per voice m_channel_strobe = (ctrl>>4) & 0xf; - data = (INT32)m_direct->read_raw_byte(ramptr + wtptr) ^ 0x80; + data = (INT32)m_direct->read_byte(ramptr + wtptr) ^ 0x80; - if (m_direct->read_raw_byte(ramptr + wtptr) == 0x00) + if (m_direct->read_byte(ramptr + wtptr) == 0x00) { halt_osc(osc, 1, &acc, resshift); } |