diff ym2612.c @ 1356:4d16c09210fd

Fix resampling code to deal with case in which output frequency is greater than the input frequency. Probably could stand to be improved, but at least it doesn't cause the emulator to deadlock
author Michael Pavone <pavone@retrodev.com>
date Thu, 11 May 2017 07:51:28 -0700
parents 1b3fe6e03e7b
children 4e5797b3935a
line wrap: on
line diff
--- a/ym2612.c	Wed May 10 22:06:59 2017 -0700
+++ b/ym2612.c	Thu May 11 07:51:28 2017 -0700
@@ -635,7 +635,7 @@
 			left = tmp >> 16;
 			tmp = right * context->lowpass_alpha + context->last_right * (0x10000 - context->lowpass_alpha);
 			right = tmp >> 16;
-			if (context->buffer_fraction > BUFFER_INC_RES) {
+			while (context->buffer_fraction > BUFFER_INC_RES) {
 				context->buffer_fraction -= BUFFER_INC_RES;
 
 				int64_t tmp = context->last_left * ((context->buffer_fraction << 16) / context->buffer_inc);