mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-16 09:45:06 +00:00
Finally fixed
This commit is contained in:
parent
8bc545c8ab
commit
74e3892fd9
3 changed files with 28 additions and 30 deletions
|
@ -22,21 +22,6 @@
|
||||||
|
|
||||||
#include "fmsharedbase.h"
|
#include "fmsharedbase.h"
|
||||||
|
|
||||||
#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;}
|
|
||||||
#define immWrite(a,v) if (!skipRegisterWrites) {writes.push_back(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} }
|
|
||||||
#define urgentWrite(a,v) if (!skipRegisterWrites) { \
|
|
||||||
if (writes.empty()) { \
|
|
||||||
writes.push_back(QueuedWrite(a,v)); \
|
|
||||||
} else if (writes.size()>16 || writes.front().addrOrVal) { \
|
|
||||||
writes.push_back(QueuedWrite(a,v)); \
|
|
||||||
} else { \
|
|
||||||
writes.push_front(QueuedWrite(a,v)); \
|
|
||||||
} \
|
|
||||||
if (dumpWrites) { \
|
|
||||||
addWrite(a,v); \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define NOTE_LINEAR(x) (((x)<<6)+baseFreqOff+log2(parent->song.tuning/440.0)*12.0*64.0)
|
#define NOTE_LINEAR(x) (((x)<<6)+baseFreqOff+log2(parent->song.tuning/440.0)*12.0*64.0)
|
||||||
|
|
||||||
class DivPlatformOPMBase: public DivPlatformFMBase {
|
class DivPlatformOPMBase: public DivPlatformFMBase {
|
||||||
|
|
|
@ -22,21 +22,6 @@
|
||||||
|
|
||||||
#include "fmsharedbase.h"
|
#include "fmsharedbase.h"
|
||||||
|
|
||||||
#define rWrite(a,v) if (!skipRegisterWrites) {pendingWrites[a]=v;}
|
|
||||||
#define immWrite(a,v) if (!skipRegisterWrites) {writes.push_back(QueuedWrite(a,v)); if (dumpWrites) {addWrite(a,v);} }
|
|
||||||
#define urgentWrite(a,v) if (!skipRegisterWrites) { \
|
|
||||||
if (writes.empty()) { \
|
|
||||||
writes.push_back(QueuedWrite(a,v)); \
|
|
||||||
} else if (writes.size()>16 || writes.front().addrOrVal) { \
|
|
||||||
writes.push_back(QueuedWrite(a,v)); \
|
|
||||||
} else { \
|
|
||||||
writes.push_front(QueuedWrite(a,v)); \
|
|
||||||
} \
|
|
||||||
if (dumpWrites) { \
|
|
||||||
addWrite(a,v); \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define CHIP_FREQBASE fmFreqBase
|
#define CHIP_FREQBASE fmFreqBase
|
||||||
#define CHIP_DIVIDER fmDivBase
|
#define CHIP_DIVIDER fmDivBase
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,34 @@ class DivPlatformFMBase: public DivDispatch {
|
||||||
short oldWrites[512];
|
short oldWrites[512];
|
||||||
short pendingWrites[512];
|
short pendingWrites[512];
|
||||||
|
|
||||||
|
inline void rWrite(unsigned short a, short v) {
|
||||||
|
if (!skipRegisterWrites) {
|
||||||
|
pendingWrites[a]=v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
inline void immWrite(unsigned short a, unsigned char v) {
|
||||||
|
if (!skipRegisterWrites) {
|
||||||
|
writes.push_back(QueuedWrite(a,v));
|
||||||
|
if (dumpWrites) {
|
||||||
|
addWrite(a,v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
inline void urgentWrite(unsigned short a, unsigned char v) {
|
||||||
|
if (!skipRegisterWrites) {
|
||||||
|
if (writes.empty()) {
|
||||||
|
writes.push_back(QueuedWrite(a,v));
|
||||||
|
} else if (writes.size()>16 || writes.front().addrOrVal) {
|
||||||
|
writes.push_back(QueuedWrite(a,v));
|
||||||
|
} else {
|
||||||
|
writes.push_front(QueuedWrite(a,v));
|
||||||
|
}
|
||||||
|
if (dumpWrites) {
|
||||||
|
addWrite(a,v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DivPlatformFMBase():
|
DivPlatformFMBase():
|
||||||
DivDispatch(),
|
DivDispatch(),
|
||||||
lastBusy(0),
|
lastBusy(0),
|
||||||
|
|
Loading…
Reference in a new issue