Renaming new POKEY core to AltASAP. Added core selection.
This commit is contained in:
parent
3a94a7acde
commit
4a7e76c448
8 changed files with 71 additions and 23 deletions
|
|
@ -65,18 +65,22 @@ const char** DivPlatformPOKEY::getRegisterSheet() {
|
|||
}
|
||||
|
||||
void DivPlatformPOKEY::acquire(short* bufL, short* bufR, size_t start, size_t len) {
|
||||
if (useAltASAP)
|
||||
acquireASAP(bufL, start, len);
|
||||
else
|
||||
acquireMZ(bufL, start, len);
|
||||
}
|
||||
|
||||
void DivPlatformPOKEY::acquireMZ(short* buf, size_t start, size_t len) {
|
||||
for (size_t h=start; h<start+len; h++) {
|
||||
while (!writes.empty()) {
|
||||
QueuedWrite w=writes.front();
|
||||
mPokey2->write( w.addr, w.val );
|
||||
Update_pokey_sound_mz(&pokey,w.addr,w.val,0);
|
||||
regPool[w.addr&0x0f]=w.val;
|
||||
writes.pop();
|
||||
}
|
||||
|
||||
mzpokeysnd_process_16(&pokey,&bufL[h],1);
|
||||
mPokey2->sampleAudio( &bufL[h], 1 );
|
||||
bufL[h] *= 160;
|
||||
mzpokeysnd_process_16(&pokey,&buf[h],1);
|
||||
|
||||
if (++oscBufDelay>=14) {
|
||||
oscBufDelay=0;
|
||||
|
|
@ -86,6 +90,23 @@ void DivPlatformPOKEY::acquire(short* bufL, short* bufR, size_t start, size_t le
|
|||
oscBuf[3]->data[oscBuf[3]->needle++]=pokey.outvol_3<<11;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DivPlatformPOKEY::acquireASAP(short* buf, size_t start, size_t len) {
|
||||
while (!writes.empty()) {
|
||||
QueuedWrite w=writes.front();
|
||||
altASAP->write(w.addr, w.val);
|
||||
writes.pop();
|
||||
}
|
||||
|
||||
for (size_t h=start; h<start+len; h++) {
|
||||
if (++oscBufDelay>=14) {
|
||||
oscBufDelay=0;
|
||||
buf[h]=altASAP->sampleAudio(oscBuf);
|
||||
} else {
|
||||
buf[h]=altASAP->sampleAudio();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DivPlatformPOKEY::tick(bool sysTick) {
|
||||
|
|
@ -373,8 +394,10 @@ DivDispatchOscBuffer* DivPlatformPOKEY::getOscBuffer(int ch) {
|
|||
}
|
||||
|
||||
unsigned char* DivPlatformPOKEY::getRegisterPool() {
|
||||
return const_cast<unsigned char*>( mPokey2->getRegisterPool() );
|
||||
return regPool;
|
||||
if (useAltASAP)
|
||||
return const_cast<unsigned char*>(altASAP->getRegisterPool());
|
||||
else
|
||||
return regPool;
|
||||
}
|
||||
|
||||
int DivPlatformPOKEY::getRegisterPoolSize() {
|
||||
|
|
@ -392,8 +415,10 @@ void DivPlatformPOKEY::reset() {
|
|||
addWrite(0xffffffff,0);
|
||||
}
|
||||
|
||||
ResetPokeyState(&pokey);
|
||||
mPokey2->reset();
|
||||
if (useAltASAP)
|
||||
altASAP->reset();
|
||||
else
|
||||
ResetPokeyState(&pokey);
|
||||
|
||||
audctl=0;
|
||||
audctlChanged=true;
|
||||
|
|
@ -425,7 +450,8 @@ void DivPlatformPOKEY::setFlags(const DivConfig& flags) {
|
|||
oscBuf[i]->rate=rate/14;
|
||||
}
|
||||
|
||||
mPokey2 = std::make_unique<Test::Pokey>( chipClock, chipClock );
|
||||
if (useAltASAP)
|
||||
altASAP=std::make_unique<AltASAP::Pokey>(chipClock, chipClock);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -447,7 +473,8 @@ int DivPlatformPOKEY::init(DivEngine* p, int channels, int sugRate, const DivCon
|
|||
oscBuf[i]=new DivDispatchOscBuffer;
|
||||
}
|
||||
|
||||
MZPOKEYSND_Init(&pokey);
|
||||
if (!useAltASAP)
|
||||
MZPOKEYSND_Init(&pokey);
|
||||
|
||||
setFlags(flags);
|
||||
reset();
|
||||
|
|
@ -458,6 +485,10 @@ void DivPlatformPOKEY::quit() {
|
|||
for (int i=0; i<4; i++) {
|
||||
delete oscBuf[i];
|
||||
}
|
||||
}
|
||||
|
||||
void DivPlatformPOKEY::setAltASAP(bool value){
|
||||
useAltASAP=value;
|
||||
}
|
||||
|
||||
DivPlatformPOKEY::~DivPlatformPOKEY() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue