#pragma once
#include "emu2149.h"

class CAYSnd
{
	protected:
		std::array<CEMU2149, AY_NUMS> m_ay8910{};      // объект сопроцессор Ay8910-3
		int                 m_nChipSel{ AY1 };             // номер выбранного чипа в данный момент

		// -----------------------------
		// логирование регистров
		bool m_bLog{ false }; // флаг работы логирования
		bool m_bLogRegOut{ false };
		FILE *m_pLOGFile{ nullptr };
		// -----------------------------

	public:
		CAYSnd();
		~CAYSnd();
		void    EnableSound(const bool bEnable);
		bool    IsSoundEnabled() const;
		void    SetFilter(const bool bEnable);
		bool    IsFilter() const;
		void    SetDCOffsetCorrect(const bool bEnable);
		bool    IsDCOffsetCorrect() const;
		void    SetStereo(const bool bEnable);
		void    ReInit();
		void    Reset();
		void    write_address(const uint16_t word);
		void    write_data(const uint8_t byte);
		void    write_address_AZ(const int nAY, const uint8_t byte);
		void    write_data_AZ(const int nAY, const uint8_t byte);
		void    GetSample1(sOneSample *pSm);
		void    GetSample2(sOneSample *pSm);


		bool                isLogEnabled() const
		{
			return m_bLog;
		}
		// фиксируем тик таймера 50Гц
		void                log_timerTick();
		// запускаем логирование
		void                log_start(const CString &strUniq);
		// завершаем логирование
		void                log_done();


};
