diff --git a/CMakeLists.txt b/CMakeLists.txt index 8053c4482..e01ef1688 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -653,7 +653,6 @@ src/engine/platform/sound/sm8521.c src/engine/platform/sound/supervision.c src/engine/platform/sound/upd1771.cpp -src/engine/platform/sound/upd1771c.c src/engine/platform/sound/d65modified.c diff --git a/src/engine/platform/scvtone.cpp b/src/engine/platform/scvtone.cpp index 14ce16d0e..110896b44 100644 --- a/src/engine/platform/scvtone.cpp +++ b/src/engine/platform/scvtone.cpp @@ -24,7 +24,7 @@ #include //#define rWrite(a,v) pendingWrites[a]=v; -#define rWrite(a,v) if (!skipRegisterWrites) {writes.push(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} } +#define rWrite(a,v) if (!skipRegisterWrites) {packet[a]=v; writePacket=true; if (dumpWrites) {addWrite(a,v);} } #define CHIP_DIVIDER 64 @@ -40,22 +40,22 @@ void DivPlatformSCVTone::acquire(short** buf, size_t len) { for (size_t h=0; hdata[oscBuf[0]->needle++]=s; buf[0][h]=s; - buf[1][h]=s; + buf[1][h]=s;*/ } } void DivPlatformSCVTone::tick(bool sysTick) { for (int i=0; i<1; i++) { - chan[i].std.next(); if (chan[i].std.vol.had) { chan[i].outVol=VOL_SCALE_LINEAR(chan[i].vol&31,MIN(31,chan[i].std.vol.val),31); @@ -144,6 +144,21 @@ void DivPlatformSCVTone::tick(bool sysTick) { } } + + // if need be, write packet + if (writePacket) { + writePacket=false; + int len=1; + if (packet[0]==2) { + len=4; + } else if (packet[0]==1) { + len=10; + } + + for (int i=0; irate=rate; } - upd1771c_sound_set_clock(&scv,(unsigned int)chipClock,8); + //upd1771c_sound_set_clock(&scv,(unsigned int)chipClock,8); } void DivPlatformSCVTone::poke(unsigned int addr, unsigned short val) { diff --git a/src/engine/platform/scvtone.h b/src/engine/platform/scvtone.h index 48b3ac194..494be4cf3 100644 --- a/src/engine/platform/scvtone.h +++ b/src/engine/platform/scvtone.h @@ -22,7 +22,7 @@ #include "../dispatch.h" #include "../../fixedQueue.h" -#include "sound/upd1771c.h" +#include "sound/upd1771.h" class DivPlatformSCVTone: public DivDispatch { struct Channel: public SharedChannel { @@ -52,8 +52,11 @@ class DivPlatformSCVTone: public DivDispatch { unsigned char regPool[16]; unsigned char kon[4]; unsigned char initWrite[4]; - struct upd1771c_t scv; + upd1771c_device scv; + unsigned char packet[16]; + + bool writePacket; friend void putDispatchChip(void*,int); friend void putDispatchChan(void*,int,int);