T6W28: chan osc which does not work right

This commit is contained in:
tildearrow 2025-03-09 01:23:10 -05:00
parent 6537125976
commit 87d1cf24a1
2 changed files with 14 additions and 0 deletions

View file

@ -67,6 +67,8 @@ void T6W28_Square::run( sms_time_t time, sms_time_t end_time )
last_amp_right = 0;
}
oscBuf->putSample(time,0);
time += delay;
if ( !period )
{
@ -100,6 +102,8 @@ void T6W28_Square::run( sms_time_t time, sms_time_t end_time )
last_amp_right = amp_right;
blip_add_delta( outputs[0], time, delta_right );
}
oscBuf->putSample(time,(amp_left+amp_right)>>2);
}
time += delay;
@ -117,6 +121,8 @@ void T6W28_Square::run( sms_time_t time, sms_time_t end_time )
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;
}
@ -168,6 +174,8 @@ void T6W28_Noise::run( sms_time_t time, sms_time_t end_time )
last_amp_right = amp_right;
blip_add_delta( outputs[1], time, delta_right );
}
oscBuf->putSample(time,(amp_left+amp_right)>>2);
}
time += delay;
@ -199,6 +207,8 @@ 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 );
oscBuf->putSample(time,(amp_left+amp_right)>>2);
}
time += l_period;
}
@ -287,6 +297,7 @@ bool T6W28_Apu::end_frame( sms_time_t end_time )
assert( last_time >= end_time );
last_time -= end_time;
assert(last_time == 0);
return(1);
}

View file

@ -40,6 +40,9 @@ void DivPlatformT6W28::acquireDirect(blip_buffer_t** bb, size_t len) {
oscBuf[i]->begin(len);
}
t6w->output(bb[0],bb[1]);
for (int i=0; i<4; i++) {
t6w->osc_output(i,oscBuf[i]);
}
while (!writes.empty()) {
QueuedWrite w=writes.front();