diff --git a/src/engine/platform/sound/t6w28/T6W28_Apu.cpp b/src/engine/platform/sound/t6w28/T6W28_Apu.cpp index 28275b2ae..c3bf4ae0f 100644 --- a/src/engine/platform/sound/t6w28/T6W28_Apu.cpp +++ b/src/engine/platform/sound/t6w28/T6W28_Apu.cpp @@ -118,13 +118,16 @@ void T6W28_Square::run( sms_time_t time, sms_time_t end_time ) { delta_left = -delta_left; delta_right = -delta_right; + phase ^= 1; + amp_left = phase ? volume_left : -volume_left; + amp_right = phase ? volume_right : -volume_right; blip_add_delta( output_left, time, delta_left ); blip_add_delta( output_right, time, delta_right ); oscBuf->putSample(time,(amp_left+amp_right)>>2); time += period; - phase ^= 1; + } while ( time < end_time ); @@ -208,6 +211,9 @@ void T6W28_Noise::run( sms_time_t time, sms_time_t end_time ) delta_right = -delta_right; blip_add_delta( output_right, time, delta_right ); + amp_left=-amp_left; + amp_right=-amp_right; + oscBuf->putSample(time,(amp_left+amp_right)>>2); } time += l_period;