add experimental low-latency mode

do not use (yet)!
This commit is contained in:
tildearrow 2022-04-15 05:37:23 -05:00
parent d47a59f5f0
commit 96715ed88c
38 changed files with 201 additions and 120 deletions

View file

@ -414,6 +414,7 @@ void* DivPlatformAmiga::getChanState(int ch) {
void DivPlatformAmiga::reset() {
for (int i=0; i<4; i++) {
chan[i]=DivPlatformAmiga::Channel();
chan[i].std.setEngine(parent);
chan[i].ws.setEngine(parent);
chan[i].ws.init(NULL,32,255);
filter[0][i]=0;

View file

@ -735,6 +735,7 @@ void DivPlatformArcade::reset() {
}
for (int i=0; i<8; i++) {
chan[i]=DivPlatformArcade::Channel();
chan[i].std.setEngine(parent);
chan[i].vol=0x7f;
chan[i].outVol=0x7f;
}

View file

@ -513,6 +513,7 @@ void DivPlatformAY8910::reset() {
memset(regPool,0,16);
for (int i=0; i<3; i++) {
chan[i]=DivPlatformAY8910::Channel();
chan[i].std.setEngine(parent);
chan[i].vol=0x0f;
}
if (dumpWrites) {

View file

@ -528,6 +528,7 @@ void DivPlatformAY8930::reset() {
memset(regPool,0,32);
for (int i=0; i<3; i++) {
chan[i]=DivPlatformAY8930::Channel();
chan[i].std.setEngine(parent);
chan[i].vol=31;
ayEnvPeriod[i]=0;
ayEnvMode[i]=0;

View file

@ -274,6 +274,7 @@ void DivPlatformBubSysWSG::reset() {
memset(regPool,0,4*2);
for (int i=0; i<2; i++) {
chan[i]=DivPlatformBubSysWSG::Channel();
chan[i].std.setEngine(parent);
chan[i].ws.setEngine(parent);
chan[i].ws.init(NULL,32,15,false);
}

View file

@ -482,6 +482,7 @@ bool DivPlatformC64::getDCOffRequired() {
void DivPlatformC64::reset() {
for (int i=0; i<3; i++) {
chan[i]=DivPlatformC64::Channel();
chan[i].std.setEngine(parent);
}
sid.reset();

View file

@ -408,6 +408,7 @@ int DivPlatformFDS::getRegisterPoolSize() {
void DivPlatformFDS::reset() {
for (int i=0; i<1; i++) {
chan[i]=DivPlatformFDS::Channel();
chan[i].std.setEngine(parent);
}
ws.setEngine(parent);
ws.init(NULL,64,63,false);

View file

@ -424,6 +424,7 @@ int DivPlatformGB::getRegisterPoolSize() {
void DivPlatformGB::reset() {
for (int i=0; i<4; i++) {
chan[i]=DivPlatformGB::Channel();
chan[i].std.setEngine(parent);
}
ws.setEngine(parent);
ws.init(NULL,32,15,false);

View file

@ -827,6 +827,7 @@ void DivPlatformGenesis::reset() {
}
for (int i=0; i<10; i++) {
chan[i]=DivPlatformGenesis::Channel();
chan[i].std.setEngine(parent);
chan[i].vol=0x7f;
chan[i].outVol=0x7f;
}

View file

@ -329,11 +329,11 @@ int DivPlatformLynx::getRegisterPoolSize()
}
void DivPlatformLynx::reset() {
mikey = std::make_unique<Lynx::Mikey>( rate );
mikey=std::make_unique<Lynx::Mikey>(rate);
for (int i=0; i<4; i++) {
chan[i]= DivPlatformLynx::Channel();
chan[i]=DivPlatformLynx::Channel();
chan[i].std.setEngine(parent);
}
if (dumpWrites) {
addWrite(0xffffffff,0);

View file

@ -348,6 +348,7 @@ float DivPlatformMMC5::getPostAmp() {
void DivPlatformMMC5::reset() {
for (int i=0; i<3; i++) {
chan[i]=DivPlatformMMC5::Channel();
chan[i].std.setEngine(parent);
}
if (dumpWrites) {
addWrite(0xffffffff,0);

View file

@ -625,6 +625,7 @@ void DivPlatformN163::reset() {
while (!writes.empty()) writes.pop();
for (int i=0; i<8; i++) {
chan[i]=DivPlatformN163::Channel();
chan[i].std.setEngine(parent);
chan[i].ws.setEngine(parent);
chan[i].ws.init(NULL,32,15,false);
}

View file

@ -474,6 +474,7 @@ float DivPlatformNES::getPostAmp() {
void DivPlatformNES::reset() {
for (int i=0; i<5; i++) {
chan[i]=DivPlatformNES::Channel();
chan[i].std.setEngine(parent);
}
if (dumpWrites) {
addWrite(0xffffffff,0);

View file

@ -934,6 +934,7 @@ void DivPlatformOPL::reset() {
for (int i=0; i<totalChans; i++) {
chan[i]=DivPlatformOPL::Channel();
chan[i].std.setEngine(parent);
chan[i].vol=0x3f;
chan[i].outVol=0x3f;
}

View file

@ -756,6 +756,7 @@ void DivPlatformOPLL::reset() {
}
for (int i=0; i<11; i++) {
chan[i]=DivPlatformOPLL::Channel();
chan[i].std.setEngine(parent);
chan[i].vol=15;
chan[i].outVol=15;
}

View file

@ -462,6 +462,7 @@ void DivPlatformPCE::reset() {
memset(regPool,0,128);
for (int i=0; i<6; i++) {
chan[i]=DivPlatformPCE::Channel();
chan[i].std.setEngine(parent);
chan[i].ws.setEngine(parent);
chan[i].ws.init(NULL,32,31,false);
}

View file

@ -327,6 +327,7 @@ int DivPlatformPCSpeaker::getRegisterPoolSize() {
void DivPlatformPCSpeaker::reset() {
for (int i=0; i<1; i++) {
chan[i]=DivPlatformPCSpeaker::Channel();
chan[i].std.setEngine(parent);
}
if (dumpWrites) {
addWrite(0xffffffff,0);

View file

@ -252,6 +252,7 @@ int DivPlatformPET::getRegisterPoolSize() {
void DivPlatformPET::reset() {
memset(regPool,0,16);
chan=Channel();
chan.std.setEngine(parent);
}
bool DivPlatformPET::isStereo() {

View file

@ -523,6 +523,7 @@ void* DivPlatformQSound::getChanState(int ch) {
void DivPlatformQSound::reset() {
for (int i=0; i<16; i++) {
chan[i]=DivPlatformQSound::Channel();
chan[i].std.setEngine(parent);
}
qsound_reset(&chip);
while(!chip.ready_flag) {

View file

@ -392,6 +392,7 @@ void DivPlatformSAA1099::reset() {
}
for (int i=0; i<6; i++) {
chan[i]=DivPlatformSAA1099::Channel();
chan[i].std.setEngine(parent);
chan[i].vol=0x0f;
}
if (dumpWrites) {

View file

@ -350,6 +350,7 @@ void DivPlatformSegaPCM::reset() {
memset(regPool,0,256);
for (int i=0; i<16; i++) {
chan[i]=DivPlatformSegaPCM::Channel();
chan[i].std.setEngine(parent);
chan[i].vol=0x7f;
chan[i].outVol=0x7f;
}

View file

@ -278,6 +278,7 @@ void* DivPlatformSMS::getChanState(int ch) {
void DivPlatformSMS::reset() {
for (int i=0; i<4; i++) {
chan[i]=DivPlatformSMS::Channel();
chan[i].std.setEngine(parent);
}
if (dumpWrites) {
addWrite(0xffffffff,0);

View file

@ -453,6 +453,7 @@ void DivPlatformSwan::reset() {
chan[i]=Channel();
chan[i].vol=15;
chan[i].pan=0xff;
chan[i].std.setEngine(parent);
chan[i].ws.setEngine(parent);
chan[i].ws.init(NULL,32,15,false);
rWrite(0x08+i,0xff);

View file

@ -294,6 +294,7 @@ void DivPlatformTIA::reset() {
memset(regPool,0,16);
for (int i=0; i<2; i++) {
chan[i]=DivPlatformTIA::Channel();
chan[i].std.setEngine(parent);
chan[i].vol=0x0f;
}
}

View file

@ -729,6 +729,7 @@ void DivPlatformTX81Z::reset() {
}
for (int i=0; i<8; i++) {
chan[i]=DivPlatformTX81Z::Channel();
chan[i].std.setEngine(parent);
chan[i].vol=0x7f;
chan[i].outVol=0x7f;
}

View file

@ -125,6 +125,7 @@ void DivPlatformVERA::acquire(short* bufL, short* bufR, size_t start, size_t len
void DivPlatformVERA::reset() {
for (int i=0; i<17; i++) {
chan[i]=Channel();
chan[i].std.setEngine(parent);
}
psg_reset(psg);
pcm_reset(pcm);

View file

@ -278,6 +278,7 @@ void DivPlatformVIC20::reset() {
memset(regPool,0,16);
for (int i=0; i<4; i++) {
chan[i]=Channel();
chan[i].std.setEngine(parent);
}
vic_sound_machine_init(vic,rate,chipClock);
hasWaveWrite=false;

View file

@ -429,6 +429,7 @@ int DivPlatformVRC6::getRegisterPoolSize() {
void DivPlatformVRC6::reset() {
for (int i=0; i<3; i++) {
chan[i]=DivPlatformVRC6::Channel();
chan[i].std.setEngine(parent);
}
// a poll may be necessary to decide the default
chan[2].vol=30;

View file

@ -818,6 +818,7 @@ void DivPlatformX1_010::reset() {
for (int i=0; i<16; i++) {
chan[i]=DivPlatformX1_010::Channel();
chan[i].reset();
chan[i].std.setEngine(parent);
chan[i].ws.setEngine(parent);
chan[i].ws.init(NULL,128,255,false);
}

View file

@ -1068,6 +1068,7 @@ void DivPlatformYM2610::reset() {
fm->reset();
for (int i=0; i<14; i++) {
chan[i]=DivPlatformYM2610::Channel();
chan[i].std.setEngine(parent);
}
for (int i=0; i<4; i++) {
chan[i].vol=0x7f;

View file

@ -1131,6 +1131,7 @@ void DivPlatformYM2610B::reset() {
fm->reset();
for (int i=0; i<16; i++) {
chan[i]=DivPlatformYM2610B::Channel();
chan[i].std.setEngine(parent);
}
for (int i=0; i<6; i++) {
chan[i].vol=0x7f;