NES: wire up NSFplay

no muting supported for now
see #27
This commit is contained in:
tildearrow 2022-05-01 23:20:20 -05:00
parent 7b31f6a3e5
commit cb7aa4aa05
11 changed files with 193 additions and 99 deletions

View file

@ -23,6 +23,8 @@
#include "../dispatch.h"
#include "../macroInt.h"
#include "sound/nes_nsfplay/nes_apu.h"
class DivPlatformNES: public DivDispatch {
struct Channel {
int freq, baseFreq, pitch, pitch2, prevFreq, note, ins;
@ -66,11 +68,18 @@ class DivPlatformNES: public DivDispatch {
unsigned char writeOscBuf;
unsigned char apuType;
bool dacAntiClickOn;
bool useNP;
struct NESAPU* nes;
xgm::NES_APU* nes1_NP;
xgm::NES_DMC* nes2_NP;
unsigned char regPool[128];
friend void putDispatchChan(void*,int,int);
void doWrite(unsigned short addr, unsigned char data);
void acquire_puNES(short* bufL, short* bufR, size_t start, size_t len);
void acquire_NSFPlay(short* bufL, short* bufR, size_t start, size_t len);
public:
void acquire(short* bufL, short* bufR, size_t start, size_t len);
int dispatch(DivCommand c);
@ -84,6 +93,7 @@ class DivPlatformNES: public DivDispatch {
void muteChannel(int ch, bool mute);
bool keyOffAffectsArp(int ch);
float getPostAmp();
void setNSFPlay(bool use);
void setFlags(unsigned int flags);
void notifyInsDeletion(void* ins);
void poke(unsigned int addr, unsigned short val);