parent
de09073232
commit
430d0329bd
|
@ -320,6 +320,9 @@ public:
|
||||||
// generate one sample of sound
|
// generate one sample of sound
|
||||||
void generate(output_data *output, uint32_t numsamples = 1);
|
void generate(output_data *output, uint32_t numsamples = 1);
|
||||||
|
|
||||||
|
// get the engine
|
||||||
|
fm_engine* debug_engine() { return &m_fm; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// internal state
|
// internal state
|
||||||
uint8_t m_address; // address register
|
uint8_t m_address; // address register
|
||||||
|
|
|
@ -147,6 +147,8 @@ const char* DivPlatformTX81Z::getEffectName(unsigned char effect) {
|
||||||
void DivPlatformTX81Z::acquire(short* bufL, short* bufR, size_t start, size_t len) {
|
void DivPlatformTX81Z::acquire(short* bufL, short* bufR, size_t start, size_t len) {
|
||||||
static int os[2];
|
static int os[2];
|
||||||
|
|
||||||
|
ymfm::ym2414::fm_engine* fme=fm_ymfm->debug_engine();
|
||||||
|
|
||||||
for (size_t h=start; h<start+len; h++) {
|
for (size_t h=start; h<start+len; h++) {
|
||||||
os[0]=0; os[1]=0;
|
os[0]=0; os[1]=0;
|
||||||
if (!writes.empty()) {
|
if (!writes.empty()) {
|
||||||
|
@ -162,6 +164,10 @@ void DivPlatformTX81Z::acquire(short* bufL, short* bufR, size_t start, size_t le
|
||||||
|
|
||||||
fm_ymfm->generate(&out_ymfm);
|
fm_ymfm->generate(&out_ymfm);
|
||||||
|
|
||||||
|
for (int i=0; i<8; i++) {
|
||||||
|
oscBuf[i]->data[oscBuf[i]->needle++]=(fme->debug_channel(i)->debug_output(0)+fme->debug_channel(i)->debug_output(1));
|
||||||
|
}
|
||||||
|
|
||||||
os[0]=out_ymfm.data[0];
|
os[0]=out_ymfm.data[0];
|
||||||
if (os[0]<-32768) os[0]=-32768;
|
if (os[0]<-32768) os[0]=-32768;
|
||||||
if (os[0]>32767) os[0]=32767;
|
if (os[0]>32767) os[0]=32767;
|
||||||
|
@ -714,6 +720,10 @@ void* DivPlatformTX81Z::getChanState(int ch) {
|
||||||
return &chan[ch];
|
return &chan[ch];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DivDispatchOscBuffer* DivPlatformTX81Z::getOscBuffer(int ch) {
|
||||||
|
return oscBuf[ch];
|
||||||
|
}
|
||||||
|
|
||||||
unsigned char* DivPlatformTX81Z::getRegisterPool() {
|
unsigned char* DivPlatformTX81Z::getRegisterPool() {
|
||||||
return regPool;
|
return regPool;
|
||||||
}
|
}
|
||||||
|
@ -789,6 +799,7 @@ int DivPlatformTX81Z::init(DivEngine* p, int channels, int sugRate, unsigned int
|
||||||
skipRegisterWrites=false;
|
skipRegisterWrites=false;
|
||||||
for (int i=0; i<8; i++) {
|
for (int i=0; i<8; i++) {
|
||||||
isMuted[i]=false;
|
isMuted[i]=false;
|
||||||
|
oscBuf[i]=new DivDispatchOscBuffer;
|
||||||
}
|
}
|
||||||
setFlags(flags);
|
setFlags(flags);
|
||||||
fm_ymfm=new ymfm::ym2414(iface);
|
fm_ymfm=new ymfm::ym2414(iface);
|
||||||
|
@ -798,6 +809,9 @@ int DivPlatformTX81Z::init(DivEngine* p, int channels, int sugRate, unsigned int
|
||||||
}
|
}
|
||||||
|
|
||||||
void DivPlatformTX81Z::quit() {
|
void DivPlatformTX81Z::quit() {
|
||||||
|
for (int i=0; i<8; i++) {
|
||||||
|
delete oscBuf[i];
|
||||||
|
}
|
||||||
delete fm_ymfm;
|
delete fm_ymfm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ class DivPlatformTX81Z: public DivDispatch {
|
||||||
chVolR(127) {}
|
chVolR(127) {}
|
||||||
};
|
};
|
||||||
Channel chan[8];
|
Channel chan[8];
|
||||||
|
DivDispatchOscBuffer* oscBuf[8];
|
||||||
struct QueuedWrite {
|
struct QueuedWrite {
|
||||||
unsigned short addr;
|
unsigned short addr;
|
||||||
unsigned char val;
|
unsigned char val;
|
||||||
|
@ -102,6 +103,7 @@ class DivPlatformTX81Z: public DivDispatch {
|
||||||
void acquire(short* bufL, short* bufR, size_t start, size_t len);
|
void acquire(short* bufL, short* bufR, size_t start, size_t len);
|
||||||
int dispatch(DivCommand c);
|
int dispatch(DivCommand c);
|
||||||
void* getChanState(int chan);
|
void* getChanState(int chan);
|
||||||
|
DivDispatchOscBuffer* getOscBuffer(int chan);
|
||||||
unsigned char* getRegisterPool();
|
unsigned char* getRegisterPool();
|
||||||
int getRegisterPoolSize();
|
int getRegisterPoolSize();
|
||||||
void reset();
|
void reset();
|
||||||
|
|
Loading…
Reference in New Issue