NES: puNES acquireDirect(), part 2
per-chan osc
This commit is contained in:
parent
5df3e1f030
commit
29849972dd
|
@ -112,6 +112,11 @@ void DivPlatformNES::acquire_puNES(blip_buffer_t** bb, size_t len) {
|
|||
|
||||
nes->timestamp=0;
|
||||
nes->bb=bb[0];
|
||||
nes->S1.oscBuf=oscBuf[0];
|
||||
nes->S2.oscBuf=oscBuf[1];
|
||||
nes->TR.oscBuf=oscBuf[2];
|
||||
nes->NS.oscBuf=oscBuf[3];
|
||||
nes->DMC.oscBuf=oscBuf[4];
|
||||
|
||||
for (size_t i=0; i<len; i++) {
|
||||
// heuristic
|
||||
|
@ -140,16 +145,6 @@ void DivPlatformNES::acquire_puNES(blip_buffer_t** bb, size_t len) {
|
|||
i+=pcmAdvance-1;
|
||||
|
||||
doPCM;
|
||||
|
||||
/*
|
||||
if (++writeOscBuf>=32) {
|
||||
writeOscBuf=0;
|
||||
oscBuf[0]->putSample(i,isMuted[0]?0:(nes->S1.output<<11));
|
||||
oscBuf[1]->putSample(i,isMuted[1]?0:(nes->S2.output<<11));
|
||||
oscBuf[2]->putSample(i,isMuted[2]?0:(nes->TR.output<<11));
|
||||
oscBuf[3]->putSample(i,isMuted[3]?0:(nes->NS.output<<11));
|
||||
oscBuf[4]->putSample(i,isMuted[4]?0:(nes->DMC.output<<8));
|
||||
}*/
|
||||
}
|
||||
apu_tick(nes,len);
|
||||
|
||||
|
|
|
@ -324,6 +324,12 @@ void apu_tick(struct NESAPU* a, int len) {
|
|||
blip_add_delta(a->bb,a->timestamp,sample-a->lastSample);
|
||||
a->lastSample=sample;
|
||||
}
|
||||
// output chan osc
|
||||
a->S1.oscBuf->putSample(a->timestamp,a->muted[0]?0:(a->S1.output<<11));
|
||||
a->S2.oscBuf->putSample(a->timestamp,a->muted[1]?0:(a->S2.output<<11));
|
||||
a->TR.oscBuf->putSample(a->timestamp,a->muted[2]?0:(a->TR.output<<11));
|
||||
a->NS.oscBuf->putSample(a->timestamp,a->muted[3]?0:(a->NS.output<<11));
|
||||
a->DMC.oscBuf->putSample(a->timestamp,a->muted[4]?0:(a->DMC.output<<8));
|
||||
|
||||
rem-=advance;
|
||||
a->timestamp++;
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
#include "common.h"
|
||||
#include "blip_buf.h"
|
||||
#include "../../../dispatch.h"
|
||||
|
||||
enum dmc_types_of_dma { DMC_NORMAL, DMC_CPU_WRITE, DMC_R4014, DMC_NNL_DMA };
|
||||
enum apu_channels { APU_S1, APU_S2, APU_TR, APU_NS, APU_DMC, APU_EXTRA, APU_MASTER };
|
||||
|
@ -341,6 +342,8 @@ typedef struct _apuSquare {
|
|||
_length_counter length;
|
||||
/* output */
|
||||
SWORD output;
|
||||
/* Furnace: chan osc buffer */
|
||||
DivDispatchOscBuffer* oscBuf;
|
||||
} _apuSquare;
|
||||
typedef struct _apuTriangle {
|
||||
/* timer */
|
||||
|
@ -355,6 +358,8 @@ typedef struct _apuTriangle {
|
|||
BYTE sequencer;
|
||||
/* output */
|
||||
SWORD output;
|
||||
/* Furnace: chan osc buffer */
|
||||
DivDispatchOscBuffer* oscBuf;
|
||||
} _apuTriangle;
|
||||
typedef struct _apuNoise {
|
||||
/* timer */
|
||||
|
@ -375,6 +380,8 @@ typedef struct _apuNoise {
|
|||
BYTE sequencer;
|
||||
/* output */
|
||||
SWORD output;
|
||||
/* Furnace: chan osc buffer */
|
||||
DivDispatchOscBuffer* oscBuf;
|
||||
} _apuNoise;
|
||||
typedef struct _apuDMC {
|
||||
/* ogni quanti cicli devo generare un output */
|
||||
|
@ -404,6 +411,9 @@ typedef struct _apuDMC {
|
|||
|
||||
/* misc */
|
||||
BYTE tick_type;
|
||||
|
||||
/* Furnace: chan osc buffer */
|
||||
DivDispatchOscBuffer* oscBuf;
|
||||
} _apuDMC;
|
||||
|
||||
struct _nla_table {
|
||||
|
|
Loading…
Reference in a new issue