POKEY: per-chan osc

This commit is contained in:
tildearrow 2022-12-20 15:21:03 -05:00
parent 15dc663a15
commit 210a002ae4
2 changed files with 11 additions and 1 deletions

View File

@ -74,6 +74,14 @@ void DivPlatformPOKEY::acquire(short* bufL, short* bufR, size_t start, size_t le
}
mzpokeysnd_process_16(&pokey,&bufL[h],1);
if (++oscBufDelay>=14) {
oscBufDelay=0;
oscBuf[0]->data[oscBuf[0]->needle++]=pokey.outvol_0<<11;
oscBuf[1]->data[oscBuf[1]->needle++]=pokey.outvol_1<<11;
oscBuf[2]->data[oscBuf[2]->needle++]=pokey.outvol_2<<11;
oscBuf[3]->data[oscBuf[3]->needle++]=pokey.outvol_3<<11;
}
}
}
@ -408,7 +416,7 @@ void DivPlatformPOKEY::setFlags(const DivConfig& flags) {
CHECK_CUSTOM_CLOCK;
rate=chipClock;
for (int i=0; i<4; i++) {
oscBuf[i]->rate=rate/16;
oscBuf[i]->rate=rate/14;
}
}
@ -424,6 +432,7 @@ int DivPlatformPOKEY::init(DivEngine* p, int channels, int sugRate, const DivCon
parent=p;
dumpWrites=false;
skipRegisterWrites=false;
oscBufDelay=0;
for (int i=0; i<4; i++) {
isMuted[i]=false;
oscBuf[i]=new DivDispatchOscBuffer;

View File

@ -47,6 +47,7 @@ class DivPlatformPOKEY: public DivDispatch {
std::queue<QueuedWrite> writes;
unsigned char audctl;
bool audctlChanged;
unsigned char oscBufDelay;
PokeyState pokey;
unsigned char regPool[16];
friend void putDispatchChip(void*,int);