changeset 929:0ee8cfcc06d1

Change where decay to sustain transition happens to match hardware when decay rate is slow or 0
author Michael Pavone <pavone@retrodev.com>
date Wed, 10 Feb 2016 20:05:39 -0800
parents 8bd82aead087
children f33e8d88ab6f
files ym2612.c
diffstat 1 files changed, 4 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/ym2612.c	Wed Feb 10 20:04:51 2016 -0800
+++ b/ym2612.c	Wed Feb 10 20:05:39 2016 -0800
@@ -298,6 +298,10 @@
 			ym_operator * operator = context->operators + op;
 			ym_channel * channel = context->channels + op/4;
 			uint8_t rate;
+			if (operator->env_phase == PHASE_DECAY && operator->envelope >= operator->sustain_level) {
+				//operator->envelope = operator->sustain_level;
+				operator->env_phase = PHASE_SUSTAIN;
+			}
 			for(;;) {
 				rate = operator->rates[operator->env_phase];
 				if (rate) {
@@ -348,10 +352,6 @@
 					if (operator->envelope > MAX_ENVELOPE) {
 						operator->envelope = MAX_ENVELOPE;
 					}
-					if (operator->env_phase == PHASE_DECAY && operator->envelope >= operator->sustain_level) {
-						//operator->envelope = operator->sustain_level;
-						operator->env_phase = PHASE_SUSTAIN;
-					}
 				}
 			}
 			context->current_env_op++;