openMSX
|
This class implements the AY-3-8910 sound chip. More...
#include <AY8910.hh>
Public Member Functions | |
AY8910 (const std::string &name, AY8910Periphery &periphery, const DeviceConfig &config, EmuTime::param time) | |
~AY8910 () | |
uint8_t | readRegister (unsigned reg, EmuTime::param time) |
uint8_t | peekRegister (unsigned reg, EmuTime::param time) const |
void | writeRegister (unsigned reg, uint8_t value, EmuTime::param time) |
void | reset (EmuTime::param time) |
template<typename Archive > | |
void | serialize (Archive &ar, unsigned version) |
![]() | |
bool | generateInput (float *buffer, size_t num) |
Note: To enable various optimizations (like SSE), this method is allowed to generate up to 3 extra sample. More... | |
DynamicClock & | getEmuClock () |
![]() | |
SoundDevice (const SoundDevice &)=delete | |
SoundDevice & | operator= (const SoundDevice &)=delete |
const std::string & | getName () const |
Get the unique name that identifies this sound device. More... | |
std::string_view | getDescription () const |
Gets a description of this sound device, to be presented to the user. More... | |
bool | isStereo () const |
Is this a stereo device? This is set in the constructor and cannot be changed anymore. More... | |
AmplificationFactors | getAmplificationFactor () const |
void | setSoftwareVolume (float volume, EmuTime::param time) |
Change the 'software volume' of this sound device. More... | |
void | setSoftwareVolume (float left, float right, EmuTime::param time) |
void | recordChannel (unsigned channel, const Filename &filename) |
void | muteChannel (unsigned channel, bool muted) |
virtual void | setOutputRate (unsigned hostSampleRate, double speed)=0 |
When a SoundDevice registers itself with the Mixer, the Mixer sets the required sampleRate through this method. More... | |
virtual bool | updateBuffer (size_t length, float *buffer, EmuTime::param time)=0 |
Generate sample data. More... | |
Additional Inherited Members | |
![]() | |
enum | ResampleType { RESAMPLE_HQ , RESAMPLE_LQ , RESAMPLE_BLIP } |
![]() | |
static constexpr unsigned | MAX_CHANNELS = 24 |
![]() | |
ResampledSoundDevice (MSXMotherBoard &motherBoard, std::string_view name, static_string_view description, unsigned channels, unsigned inputSampleRate, bool stereo) | |
~ResampledSoundDevice () | |
void | setOutputRate (unsigned hostSampleRate, double speed) override |
When a SoundDevice registers itself with the Mixer, the Mixer sets the required sampleRate through this method. More... | |
bool | updateBuffer (size_t length, float *buffer, EmuTime::param time) override |
Generate sample data. More... | |
void | update (const Setting &setting) noexcept override |
void | createResampler () |
![]() | |
SoundDevice (MSXMixer &mixer, std::string_view name, static_string_view description, unsigned numChannels, unsigned inputRate, bool stereo) | |
Constructor. More... | |
~SoundDevice () | |
virtual float | getAmplificationFactorImpl () const |
Get amplification/attenuation factor for this device. More... | |
void | registerSound (const DeviceConfig &config) |
Registers this sound device with the Mixer. More... | |
void | unregisterSound () |
Unregisters this sound device with the Mixer. More... | |
void | updateStream (EmuTime::param time) |
void | setInputRate (unsigned sampleRate) |
unsigned | getInputRate () const |
virtual void | generateChannels (std::span< float * > buffers, unsigned num)=0 |
Abstract method to generate the actual sound data. More... | |
bool | mixChannels (float *dataOut, size_t samples) |
Calls generateChannels() and combines the output to a single channel. More... | |
const DynamicClock & | getHostSampleClock () const |
See MSXMixer::getHostSampleClock(). More... | |
double | getEffectiveSpeed () const |
![]() | |
Observer ()=default | |
~Observer ()=default | |
Observer (const Observer &)=delete | |
Observer & | operator= (const Observer &)=delete |
virtual void | update (const Setting &subject) noexcept=0 |
virtual void | subjectDeleted (const Setting &) |
![]() | |
static void | addFill (float *&buffer, float value, unsigned num) |
Adds a number of samples that all have the same value. More... | |
This class implements the AY-3-8910 sound chip.
Only the AY-3-8910 is emulated, no surrounding hardware, use the class AY8910Periphery to connect peripherals.
openmsx::AY8910::AY8910 | ( | const std::string & | name, |
AY8910Periphery & | periphery, | ||
const DeviceConfig & | config, | ||
EmuTime::param | time | ||
) |
openmsx::AY8910::~AY8910 | ( | ) |
Definition at line 502 of file AY8910.cc.
References openmsx::Subject< T >::detach(), and openmsx::SoundDevice::unregisterSound().
uint8_t openmsx::AY8910::peekRegister | ( | unsigned | reg, |
EmuTime::param | time | ||
) | const |
Definition at line 548 of file AY8910.cc.
References openmsx::AY_ENABLE, openmsx::AY_PORTA, openmsx::AY_PORTB, openmsx::AY8910Periphery::readA(), and openmsx::AY8910Periphery::readB().
Referenced by openmsx::ColecoSuperGameModule::peekIO(), openmsx::MSXPSG::peekIO(), and openmsx::SVIPSG::peekIO().
uint8_t openmsx::AY8910::readRegister | ( | unsigned | reg, |
EmuTime::param | time | ||
) |
Definition at line 523 of file AY8910.cc.
References openmsx::AY_ENABLE, openmsx::AY_PORTA, openmsx::AY_PORTB, openmsx::AY8910Periphery::readA(), and openmsx::AY8910Periphery::readB().
Referenced by openmsx::ColecoSuperGameModule::readIO(), openmsx::MSXPSG::readIO(), and openmsx::SVIPSG::readIO().
void openmsx::AY8910::reset | ( | EmuTime::param | time | ) |
Definition at line 510 of file AY8910.cc.
Referenced by openmsx::Carnivore2::reset(), openmsx::ColecoSuperGameModule::reset(), openmsx::MegaFlashRomSCCPlus::reset(), openmsx::MegaFlashRomSCCPlusSD::reset(), openmsx::ReproCartridgeV1::reset(), openmsx::ReproCartridgeV2::reset(), openmsx::MSXPSG::reset(), and openmsx::SVIPSG::reset().
void openmsx::AY8910::serialize | ( | Archive & | ar, |
unsigned | version | ||
) |
Definition at line 1003 of file AY8910.cc.
References openmsx::AY_AVOL, and xrange().
void openmsx::AY8910::writeRegister | ( | unsigned | reg, |
uint8_t | value, | ||
EmuTime::param | time | ||
) |
Definition at line 567 of file AY8910.cc.
References openmsx::AY_ESHAPE, openmsx::AY_PORTA, and openmsx::SoundDevice::updateStream().
Referenced by openmsx::Carnivore2::writeIO(), openmsx::ColecoSuperGameModule::writeIO(), openmsx::MegaFlashRomSCCPlus::writeIO(), openmsx::MegaFlashRomSCCPlusSD::writeIO(), openmsx::ReproCartridgeV1::writeIO(), openmsx::ReproCartridgeV2::writeIO(), openmsx::MSXPSG::writeIO(), and openmsx::SVIPSG::writeIO().