rf5c400.cpp: Fix GitHub issue #6883 (#6887)

This commit is contained in:
cam900 2020-06-30 21:28:27 +09:00 committed by GitHub
parent bd7430d59a
commit 1d8375eedd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -193,7 +193,7 @@ void rf5c400_device::device_start()
void rf5c400_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
int i, ch;
uint32_t end, loop;
uint64_t end, loop;
uint64_t pos;
uint8_t vol, lvol, rvol, type;
uint8_t env_phase;
@ -209,8 +209,8 @@ void rf5c400_device::sound_stream_update(sound_stream &stream, stream_sample_t *
stream_sample_t *buf1 = outputs[1];
// start = ((channel->startH & 0xFF00) << 8) | channel->startL;
end = ((channel->endHloopH & 0xFF) << 16) | channel->endL;
loop = ((channel->endHloopH & 0xFF00) << 8) | channel->loopL;
end = ((((channel->endHloopH & 0xFF) << 16) | channel->endL) << 16) | 0xffffULL;
loop = ((((channel->endHloopH & 0xFF00) << 8) | channel->loopL) << 16);
pos = channel->pos;
vol = channel->volume & 0xFF;
lvol = channel->pan & 0xFF;
@ -296,10 +296,10 @@ void rf5c400_device::sound_stream_update(sound_stream &stream, stream_sample_t *
*buf1++ += sample * pan_table[rvol];
pos += channel->step;
if ((pos>>16) > end)
if (pos > end)
{
pos -= loop<<16;
pos &= 0xFFFFFF0000U;
pos -= loop;
pos &= ~0xffffULL;
}
}