C64: dSID core, part 2

This commit is contained in:
tildearrow 2023-07-05 17:37:25 -05:00
parent 621616ae25
commit bcd5bfdb42
1 changed files with 11 additions and 4 deletions

View File

@ -80,7 +80,8 @@ void DivPlatformC64::acquire(short** buf, size_t len) {
writes.pop();
}
if (sidCore==2) {
buf[0][i]=32767.0*dSID_render(sid_d);
double o=dSID_render(sid_d);
buf[0][i]=32767*CLAMP(o,-1.0,1.0);
if (++writeOscBuf>=4) {
writeOscBuf=0;
oscBuf[0]->data[oscBuf[0]->needle++]=sid_d->lastOut[0];
@ -465,9 +466,9 @@ void DivPlatformC64::muteChannel(int ch, bool mute) {
if (sidCore==2) {
dSID_setMuteMask(
sid_d,
(isMuted[0]?1:0)|
(isMuted[1]?2:0)|
(isMuted[2]?4:0)
(isMuted[0]?0:1)|
(isMuted[1]?0:2)|
(isMuted[2]?0:4)
);
} else if (sidCore==1) {
sid_fp.mute(ch,mute);
@ -543,6 +544,12 @@ void DivPlatformC64::reset() {
if (sidCore==2) {
dSID_init(sid_d,chipClock,rate,sidIs6581?6581:8580,1);
dSID_setMuteMask(
sid_d,
(isMuted[0]?0:1)|
(isMuted[1]?0:2)|
(isMuted[2]?0:4)
);
} else if (sidCore==1) {
sid_fp.reset();
sid_fp.clockSilent(16000);