OPNA/B: batman is expanding
This commit is contained in:
parent
569df5b477
commit
e16bc1a195
|
@ -313,6 +313,16 @@ void DivPlatformYM2203::acquire_lle(short** buf, size_t len) {
|
||||||
fmOut[i]=0;
|
fmOut[i]=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AY -> OPN
|
||||||
|
ay->runDAC();
|
||||||
|
ay->runTFX(rate);
|
||||||
|
ay->flushWrites();
|
||||||
|
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
||||||
|
if (i.addr>15) continue;
|
||||||
|
immWrite(i.addr&15,i.val);
|
||||||
|
}
|
||||||
|
ay->getRegisterWrites().clear();
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
bool canWeWrite=fm_lle.prescaler_latch[1]&1;
|
bool canWeWrite=fm_lle.prescaler_latch[1]&1;
|
||||||
|
|
||||||
|
|
|
@ -325,6 +325,7 @@ void DivPlatformYM2608::acquire_combo(short** buf, size_t len) {
|
||||||
for (size_t h=0; h<len; h++) {
|
for (size_t h=0; h<len; h++) {
|
||||||
// AY -> OPN
|
// AY -> OPN
|
||||||
ay->runDAC();
|
ay->runDAC();
|
||||||
|
ay->runTFX(rate);
|
||||||
ay->flushWrites();
|
ay->flushWrites();
|
||||||
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
||||||
if (i.addr>15) continue;
|
if (i.addr>15) continue;
|
||||||
|
@ -440,6 +441,7 @@ void DivPlatformYM2608::acquire_ymfm(short** buf, size_t len) {
|
||||||
for (size_t h=0; h<len; h++) {
|
for (size_t h=0; h<len; h++) {
|
||||||
// AY -> OPN
|
// AY -> OPN
|
||||||
ay->runDAC();
|
ay->runDAC();
|
||||||
|
ay->runTFX(rate);
|
||||||
ay->flushWrites();
|
ay->flushWrites();
|
||||||
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
||||||
if (i.addr>15) continue;
|
if (i.addr>15) continue;
|
||||||
|
@ -680,6 +682,10 @@ void DivPlatformYM2608::acquire_lle(short** buf, size_t len) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DivPlatformYM2608::fillStream(std::vector<DivDelayedWrite>& stream, int sRate, size_t len) {
|
||||||
|
ay->fillStream(stream,sRate,len);
|
||||||
|
}
|
||||||
|
|
||||||
void DivPlatformYM2608::tick(bool sysTick) {
|
void DivPlatformYM2608::tick(bool sysTick) {
|
||||||
// FM
|
// FM
|
||||||
for (int i=0; i<6; i++) {
|
for (int i=0; i<6; i++) {
|
||||||
|
|
|
@ -93,6 +93,7 @@ class DivPlatformYM2608: public DivPlatformOPN {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void acquire(short** buf, size_t len);
|
void acquire(short** buf, size_t len);
|
||||||
|
void fillStream(std::vector<DivDelayedWrite>& stream, int sRate, size_t len);
|
||||||
int dispatch(DivCommand c);
|
int dispatch(DivCommand c);
|
||||||
void* getChanState(int chan);
|
void* getChanState(int chan);
|
||||||
DivMacroInt* getChanMacroInt(int ch);
|
DivMacroInt* getChanMacroInt(int ch);
|
||||||
|
|
|
@ -260,6 +260,7 @@ void DivPlatformYM2610::acquire_combo(short** buf, size_t len) {
|
||||||
for (size_t h=0; h<len; h++) {
|
for (size_t h=0; h<len; h++) {
|
||||||
// AY -> OPN
|
// AY -> OPN
|
||||||
ay->runDAC();
|
ay->runDAC();
|
||||||
|
ay->runTFX(rate);
|
||||||
ay->flushWrites();
|
ay->flushWrites();
|
||||||
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
||||||
if (i.addr>15) continue;
|
if (i.addr>15) continue;
|
||||||
|
@ -373,6 +374,7 @@ void DivPlatformYM2610::acquire_ymfm(short** buf, size_t len) {
|
||||||
for (size_t h=0; h<len; h++) {
|
for (size_t h=0; h<len; h++) {
|
||||||
// AY -> OPN
|
// AY -> OPN
|
||||||
ay->runDAC();
|
ay->runDAC();
|
||||||
|
ay->runTFX(rate);
|
||||||
ay->flushWrites();
|
ay->flushWrites();
|
||||||
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
||||||
if (i.addr>15) continue;
|
if (i.addr>15) continue;
|
||||||
|
|
|
@ -324,6 +324,7 @@ void DivPlatformYM2610B::acquire_combo(short** buf, size_t len) {
|
||||||
for (size_t h=0; h<len; h++) {
|
for (size_t h=0; h<len; h++) {
|
||||||
// AY -> OPN
|
// AY -> OPN
|
||||||
ay->runDAC();
|
ay->runDAC();
|
||||||
|
ay->runTFX(rate);
|
||||||
ay->flushWrites();
|
ay->flushWrites();
|
||||||
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
||||||
if (i.addr>15) continue;
|
if (i.addr>15) continue;
|
||||||
|
@ -439,6 +440,7 @@ void DivPlatformYM2610B::acquire_ymfm(short** buf, size_t len) {
|
||||||
for (size_t h=0; h<len; h++) {
|
for (size_t h=0; h<len; h++) {
|
||||||
// AY -> OPN
|
// AY -> OPN
|
||||||
ay->runDAC();
|
ay->runDAC();
|
||||||
|
ay->runTFX(rate);
|
||||||
ay->flushWrites();
|
ay->flushWrites();
|
||||||
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
for (DivRegWrite& i: ay->getRegisterWrites()) {
|
||||||
if (i.addr>15) continue;
|
if (i.addr>15) continue;
|
||||||
|
|
|
@ -108,6 +108,10 @@ class DivPlatformYM2610Base: public DivPlatformOPN {
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
void fillStream(std::vector<DivDelayedWrite>& stream, int sRate, size_t len) {
|
||||||
|
ay->fillStream(stream,sRate,len);
|
||||||
|
}
|
||||||
|
|
||||||
void reset() {
|
void reset() {
|
||||||
writeADPCMAOff=0;
|
writeADPCMAOff=0;
|
||||||
writeADPCMAOn=0;
|
writeADPCMAOn=0;
|
||||||
|
|
Loading…
Reference in a new issue