83 const char *m_errorString;
85 std::atomic<state_t> m_isPlaying;
89 uint_least32_t m_startTime = 0;
94 std::unique_ptr<SimpleMixer> m_simpleMixer;
123 bool forced,
const std::vector<unsigned int> &extraSidAddresses);
133 void sidParams(
double cpuFreq,
int frequency,
136 inline void run(
unsigned int events);
142 const SidConfig &config()
const {
return m_cfg; }
144 const SidInfo &info()
const {
return m_info; }
146 bool config(
const SidConfig &cfg,
bool force=
false);
148 bool fastForward(
unsigned int percent);
152 uint_least32_t play(
short *buffer, uint_least32_t samples);
154 void buffers(
short** buffers)
const;
156 int play(
unsigned int cycles);
158 bool isPlaying()
const {
return m_isPlaying != state_t::STOPPED; }
162 uint_least32_t timeMs()
const {
return m_c64.getTimeMs() - m_startTime; }
164 void debug(
const bool enable, FILE *out) { m_c64.debug(enable, out); }
166 void mute(
unsigned int sidNum,
unsigned int voice,
bool enable);
168 void filter(
unsigned int sidNum,
bool enable);
170 const char *error()
const {
return m_errorString; }
172 void setKernal(
const uint8_t* rom);
173 void setBasic(
const uint8_t* rom);
174 void setChargen(
const uint8_t* rom);
176 uint_least16_t getCia1TimerA()
const {
return m_c64.getCia1TimerA(); }
178 bool getSidStatus(
unsigned int sidNum, uint8_t regs[32]);
180 unsigned int installedSIDs()
const {
return m_c64.installedSIDs(); }
182 void initMixer(
bool stereo);
184 unsigned int mix(
short *buffer,
unsigned int samples);