diff --git a/papers/doc/7-systems/k007232.md b/papers/doc/7-systems/k007232.md index 1e5dc768..adf7d95f 100644 --- a/papers/doc/7-systems/k007232.md +++ b/papers/doc/7-systems/k007232.md @@ -1,6 +1,6 @@ # Konami K007232 -a Konami's 2 channel PCM sound chip was used in their arcade boards in 1986-1990. +a 2-channel PCM sound chip from Konami which was used in some of their 1986-1990 arcade boards. Its sample format is unique; the topmost bit is the end marker, and the low 7 bits are used for generating sound (unsigned format). diff --git a/papers/format.md b/papers/format.md index 25304378..685e1aef 100644 --- a/papers/format.md +++ b/papers/format.md @@ -1630,10 +1630,6 @@ chips which aren't on this list don't have any flags. - bit 16-19: outDepth (int) - bit 20: stereo (bool) -## (Placeholder): Konami K007232 - -- bit 0: stereo (bool) - ## 0xe0: QSound - bit 0-11: echoDelay (int) diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 328a28ed..b39aa344 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -1571,9 +1571,6 @@ void DivEngine::convertOldFlags(unsigned int oldFlags, DivConfig& newFlags, DivS newFlags.set("echoDelay",(int)(oldFlags&0xfff)); newFlags.set("echoFeedback",(int)((oldFlags>>12)&255)); break; - case DIV_SYSTEM_K007232: - if (oldFlags&1) newFlags.set("stereo",true); - break; default: break; } diff --git a/src/engine/platform/k007232.cpp b/src/engine/platform/k007232.cpp index 6268ab0a..7097f186 100644 --- a/src/engine/platform/k007232.cpp +++ b/src/engine/platform/k007232.cpp @@ -128,14 +128,14 @@ void DivPlatformK007232::tick(bool sysTick) { if (chan[i].std.panL.had) { chan[i].panning&=0xf0; chan[i].panning|=chan[i].std.panL.val&15; - if (!isMuted[i] && stereo) { + if ((!isMuted[i]) && stereo) { chan[i].volumeChanged=true; } } if (chan[i].std.panR.had) { chan[i].panning&=0x0f; chan[i].panning|=(chan[i].std.panR.val&15)<<4; - if (!isMuted[i] && stereo) { + if ((!isMuted[i]) && stereo) { chan[i].volumeChanged=true; } } @@ -158,7 +158,7 @@ void DivPlatformK007232::tick(bool sysTick) { else { chan[i].lvol=chan[i].rvol=isMuted[i]?0:chan[i].outVol&0xf; const unsigned char prevVolume=lastVolume; - lastVolume=(lastVolume&~(0xf<<(i<<2)))|((chan[i].outVol&0xf)<<(i<<2)); + lastVolume=(lastVolume&~(0xf<<(i<<2)))|((chan[i].lvol&0xf)<<(i<<2)); if (prevVolume!=lastVolume) { rWrite(0xc,lastVolume); } diff --git a/src/engine/platform/k007232.h b/src/engine/platform/k007232.h index 8b42b510..4bd6d4f7 100644 --- a/src/engine/platform/k007232.h +++ b/src/engine/platform/k007232.h @@ -95,6 +95,7 @@ class DivPlatformK007232: public DivDispatch, public k007232_intf { friend void putDispatchChip(void*,int); friend void putDispatchChan(void*,int,int); + void chWrite(unsigned char ch, unsigned int addr, unsigned char val); public: u8 read_sample(u8 ne, u32 address); void acquire(short* bufL, short* bufR, size_t start, size_t len); @@ -128,8 +129,6 @@ class DivPlatformK007232: public DivDispatch, public k007232_intf { DivDispatch(), k007232_intf(), k007232(*this) {} - private: - void chWrite(unsigned char ch, unsigned int addr, unsigned char val); }; #endif diff --git a/src/engine/sysDef.cpp b/src/engine/sysDef.cpp index 8dff95b2..674344da 100644 --- a/src/engine/sysDef.cpp +++ b/src/engine/sysDef.cpp @@ -1694,7 +1694,7 @@ void DivEngine::registerSystems() { ); sysDefs[DIV_SYSTEM_K007232]=new DivSysDef( - "Konami K007232", NULL, 0xc1 /*Placeholder*/, 0, 2, false, true, 0, false, 1U<