openMSX
Classes | Public Types | Public Member Functions | Static Public Attributes | List of all members
openmsx::YMF278 Class Referencefinal

#include <YMF278.hh>

Inheritance diagram for openmsx::YMF278:
Inheritance graph
[legend]
Collaboration diagram for openmsx::YMF278:
Collaboration graph
[legend]

Public Types

using Block128 = optional_fixed_span< const uint8_t, k128 >
 
using SetupMemPtrFunc = std::function< void(bool, std::span< const uint8_t >, std::span< const uint8_t >, std::span< YMF278::Block128, 32 >)>
 
- Public Types inherited from openmsx::ResampledSoundDevice
enum class  ResampleType { HQ , BLIP }
 

Public Member Functions

 YMF278 (const std::string &name, size_t ramSize, const DeviceConfig &config, SetupMemPtrFunc setupMemPtrs_)
 
 ~YMF278 ()
 
void clearRam ()
 
void reset (EmuTime::param time)
 
void writeReg (uint8_t reg, uint8_t data, EmuTime::param time)
 
uint8_t readReg (uint8_t reg)
 
uint8_t peekReg (uint8_t reg) const
 
uint8_t readMem (unsigned address) const
 
void writeMem (unsigned address, uint8_t value)
 
void setMixLevel (uint8_t x, EmuTime::param time)
 
void setupMemoryPointers ()
 
template<typename Archive >
void serialize (Archive &ar, unsigned version)
 
- Public Member Functions inherited from openmsx::ResampledSoundDevice
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.
 
DynamicClockgetEmuClock ()
 
- Public Member Functions inherited from openmsx::SoundDevice
 SoundDevice (const SoundDevice &)=delete
 
 SoundDevice (SoundDevice &&)=delete
 
SoundDeviceoperator= (const SoundDevice &)=delete
 
SoundDeviceoperator= (SoundDevice &&)=delete
 
const std::string & getName () const
 Get the unique name that identifies this sound device.
 
std::string_view getDescription () const
 Gets a description of this sound device, to be presented to the user.
 
unsigned getNumChannels () const
 How many channels does this device have?
 
bool hasStereoChannels () const
 Are the individual channels of this device stereo?
 
bool isStereo () const
 Is the full output of this device stereo?
 
AmplificationFactors getAmplificationFactor () const
 
void setSoftwareVolume (float volume, EmuTime::param time)
 Change the 'software volume' of this sound device.
 
void setSoftwareVolume (float left, float right, EmuTime::param time)
 
void recordChannel (unsigned channel, const Filename &filename)
 
void muteChannel (unsigned channel, bool muted)
 
std::span< const float > getLastBuffer (unsigned channel)
 Query the last generated audio signal for a specific channel.
 
float getNativeSampleRate () const
 The samples returned by 'getLastBuffer()' have this sample rate.
 
unsigned getLastMonoBufferSize () const
 getLastBuffer() with return buffers containing this many samples.
 
unsigned getLastBufferSize () const
 

Static Public Attributes

static constexpr auto k128 = size_t(128 * 1024)
 
- Static Public Attributes inherited from openmsx::SoundDevice
static constexpr unsigned MAX_CHANNELS = 24
 

Additional Inherited Members

- Protected Member Functions inherited from openmsx::ResampledSoundDevice
 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.
 
bool updateBuffer (size_t length, float *buffer, EmuTime::param time) override
 Generate sample data.
 
void update (const Setting &setting) noexcept override
 
void createResampler ()
 
- Protected Member Functions inherited from openmsx::SoundDevice
 SoundDevice (MSXMixer &mixer, std::string_view name, static_string_view description, unsigned numChannels, unsigned inputRate, bool stereo)
 Constructor.
 
 ~SoundDevice ()
 
virtual float getAmplificationFactorImpl () const
 Get amplification/attenuation factor for this device.
 
void registerSound (const DeviceConfig &config)
 Registers this sound device with the Mixer.
 
void unregisterSound ()
 Unregisters this sound device with the Mixer.
 
void updateStream (EmuTime::param time)
 
void setInputRate (unsigned sampleRate)
 
unsigned getInputRate () const
 
bool mixChannels (float *dataOut, size_t samples)
 Calls generateChannels() and combines the output to a single channel.
 
const DynamicClockgetHostSampleClock () const
 See MSXMixer::getHostSampleClock().
 
double getEffectiveSpeed () const
 
- Protected Member Functions inherited from openmsx::Observer< Setting >
 Observer ()=default
 
 ~Observer ()=default
 
 Observer (const Observer &)=delete
 
 Observer (Observer &&)=delete
 
Observeroperator= (const Observer &)=delete
 
Observeroperator= (Observer &&)=delete
 
virtual void subjectDeleted (const Setting &)
 
- Static Protected Member Functions inherited from openmsx::SoundDevice
static void addFill (float *&buffer, float value, unsigned num)
 Adds a number of samples that all have the same value.
 

Detailed Description

Definition at line 24 of file YMF278.hh.

Member Typedef Documentation

◆ Block128

Definition at line 28 of file YMF278.hh.

◆ SetupMemPtrFunc

using openmsx::YMF278::SetupMemPtrFunc = std::function<void( bool , std::span<const uint8_t> , std::span<const uint8_t> , std::span<YMF278::Block128, 32> )>

Definition at line 30 of file YMF278.hh.

Constructor & Destructor Documentation

◆ YMF278()

openmsx::YMF278::YMF278 ( const std::string &  name,
size_t  ramSize,
const DeviceConfig config,
SetupMemPtrFunc  setupMemPtrs_ 
)

◆ ~YMF278()

openmsx::YMF278::~YMF278 ( )

Definition at line 820 of file YMF278.cc.

References openmsx::SoundDevice::unregisterSound().

Member Function Documentation

◆ clearRam()

void openmsx::YMF278::clearRam ( )

Definition at line 825 of file YMF278.cc.

References openmsx::TrackedRam::clear().

Referenced by openmsx::YMF278B::powerUp().

◆ peekReg()

uint8_t openmsx::YMF278::peekReg ( uint8_t  reg) const

Definition at line 775 of file YMF278.cc.

References readMem().

Referenced by openmsx::YMF278B::peekIO(), and readReg().

◆ readMem()

uint8_t openmsx::YMF278::readMem ( unsigned  address) const

Definition at line 873 of file YMF278.cc.

Referenced by peekReg().

◆ readReg()

uint8_t openmsx::YMF278::readReg ( uint8_t  reg)

Definition at line 760 of file YMF278.cc.

References peekReg().

Referenced by openmsx::YMF278B::readIO().

◆ reset()

void openmsx::YMF278::reset ( EmuTime::param  time)

◆ serialize()

template<typename Archive >
void openmsx::YMF278::serialize ( Archive &  ar,
unsigned  version 
)

Definition at line 1000 of file YMF278.cc.

References enumerate(), openmsx::TrackedRam::getWriteBackdoor(), and t.

◆ setMixLevel()

void openmsx::YMF278::setMixLevel ( uint8_t  x,
EmuTime::param  time 
)

Definition at line 492 of file YMF278.cc.

References openmsx::SoundDevice::setSoftwareVolume().

Referenced by reset(), and openmsx::YMF278B::writeIO().

◆ setupMemoryPointers()

void openmsx::YMF278::setupMemoryPointers ( )

Definition at line 867 of file YMF278.cc.

Referenced by reset(), and openmsx::YMF278B::setupMemoryPointers().

◆ writeMem()

void openmsx::YMF278::writeMem ( unsigned  address,
uint8_t  value 
)

Definition at line 883 of file YMF278.cc.

References openmsx::TrackedRam::size(), and openmsx::TrackedRam::write().

◆ writeReg()

void openmsx::YMF278::writeReg ( uint8_t  reg,
uint8_t  data,
EmuTime::param  time 
)

Definition at line 582 of file YMF278.cc.

References openmsx::SoundDevice::updateStream().

Referenced by openmsx::YMF278B::writeIO().

Member Data Documentation

◆ k128

constexpr auto openmsx::YMF278::k128 = size_t(128 * 1024)
staticconstexpr

Definition at line 27 of file YMF278.hh.


The documentation for this class was generated from the following files: