get it done

OPL UNFINISHED
This commit is contained in:
tildearrow 2024-10-19 18:28:27 -05:00
parent dd9d8dccd1
commit 69b03172b1
13 changed files with 116 additions and 96 deletions

View file

@ -274,7 +274,10 @@ void DivPlatformYM2610::acquire_combo(short** buf, size_t len) {
if (--delay<1 && !(fm->read(0)&0x80)) {
QueuedWrite& w=writes.front();
if (w.addr<=0x1c || (w.addr>=0x100 && w.addr<=0x12d)) {
if (w.addr==0xfffffffe) {
delay=w.val;
writes.pop_front();
} else if (w.addr<=0x1c || (w.addr>=0x100 && w.addr<=0x12d)) {
// ymfm write
fm->write(0x0+((w.addr>>8)<<1),w.addr);
fm->write(0x1+((w.addr>>8)<<1),w.val);
@ -385,11 +388,15 @@ void DivPlatformYM2610::acquire_ymfm(short** buf, size_t len) {
if (!writes.empty()) {
if (--delay<1 && !(fm->read(0)&0x80)) {
QueuedWrite& w=writes.front();
fm->write(0x0+((w.addr>>8)<<1),w.addr);
fm->write(0x1+((w.addr>>8)<<1),w.val);
regPool[w.addr&0x1ff]=w.val;
if (w.addr==0xfffffffe) {
delay=w.val;
} else {
fm->write(0x0+((w.addr>>8)<<1),w.addr);
fm->write(0x1+((w.addr>>8)<<1),w.val);
regPool[w.addr&0x1ff]=w.val;
delay=1;
}
writes.pop_front();
delay=1;
}
}
@ -956,9 +963,7 @@ void DivPlatformYM2610::tick(bool sysTick) {
// hard reset handling
if (mustHardReset) {
for (unsigned int i=hardResetElapsed; i<hardResetCycles; i++) {
immWrite(0xf0,i&0xff);
}
immWrite(0xfffffffe,hardResetCycles-hardResetElapsed);
for (int i=0; i<(psgChanOffs-isCSM); i++) {
if (i==1 && extMode) continue;
if ((chan[i].keyOn || chan[i].opMaskChanged) && chan[i].hardReset) {