2022-02-13 17:02:49 -05:00
|
|
|
// Part of SAASound copyright 2020 Dave Hooper <dave@beermex.com>
|
|
|
|
//
|
|
|
|
// SAADevice.h: connecting the subcomponents of the SAA1099 together.
|
|
|
|
// This class handles device inputs and outputs (clocking, data and
|
|
|
|
// address bus, and simulated output)
|
|
|
|
//
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#ifndef SAADEVICE_H_INCLUDED
|
|
|
|
#define SAADEVICE_H_INCLUDED
|
|
|
|
|
|
|
|
#include "SAASound.h"
|
|
|
|
#include "SAANoise.h"
|
|
|
|
#include "SAAEnv.h"
|
|
|
|
#include "SAAFreq.h"
|
|
|
|
#include "SAAAmp.h"
|
|
|
|
|
|
|
|
class CSAADevice
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
int m_nCurrentSaaReg;
|
|
|
|
bool m_bOutputEnabled;
|
|
|
|
bool m_bSync;
|
|
|
|
int m_nOversample;
|
|
|
|
|
|
|
|
CSAANoise m_Noise0, m_Noise1;
|
|
|
|
CSAAEnv m_Env0, m_Env1;
|
|
|
|
CSAAFreq m_Osc0, m_Osc1, m_Osc2, m_Osc3, m_Osc4, m_Osc5;
|
|
|
|
CSAAAmp m_Amp0, m_Amp1, m_Amp2, m_Amp3, m_Amp4, m_Amp5;
|
|
|
|
|
|
|
|
CSAANoise* Noise[2];
|
|
|
|
CSAAEnv* Env[2];
|
|
|
|
CSAAFreq* Osc[6];
|
|
|
|
CSAAAmp* Amp[6];
|
|
|
|
|
|
|
|
#if defined(DEBUG) || defined(DEBUGSAA)
|
|
|
|
BYTE m_Reg[32];
|
|
|
|
#endif
|
|
|
|
|
|
|
|
public:
|
|
|
|
CSAADevice();
|
|
|
|
~CSAADevice();
|
|
|
|
|
|
|
|
void _WriteAddress(BYTE nReg);
|
|
|
|
void _WriteData(BYTE nData);
|
|
|
|
#if defined(DEBUG) || defined(DEBUGSAA) || defined(USE_CONFIG_FILE)
|
|
|
|
BYTE _ReadAddress(void);
|
|
|
|
#endif
|
|
|
|
#if defined(DEBUG)
|
|
|
|
BYTE _ReadData(void);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
void _SetClockRate(unsigned int nClockRate);
|
|
|
|
void _SetSampleRate(unsigned int nSampleRate);
|
|
|
|
void _SetOversample(unsigned int nOversample);
|
per-channel oscilloscope, part 5
SAA1099 (SAASound and MAME), Lynx, MMC5, N163, PC Engine, PC Speaker,
PET, QSound, WonderSwan, VERA, VIC-20, VRC6 and X1-010!
2022-05-01 03:40:03 -04:00
|
|
|
void _TickAndOutputStereo(unsigned int& left_mixed, unsigned int& right_mixed, DivDispatchOscBuffer** oscBuf);
|
2022-02-13 17:02:49 -05:00
|
|
|
void _TickAndOutputSeparate(unsigned int& left_mixed, unsigned int& right_mixed,
|
|
|
|
unsigned int& left0, unsigned int& right0,
|
|
|
|
unsigned int& left1, unsigned int& right1,
|
|
|
|
unsigned int& left2, unsigned int& right2,
|
|
|
|
unsigned int& left3, unsigned int& right3,
|
|
|
|
unsigned int& left4, unsigned int& right4,
|
|
|
|
unsigned int& left5, unsigned int& right5
|
|
|
|
);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // SAADEVICE_H_INCLUDED
|