openMSX
MSXYamahaSFG.hh
Go to the documentation of this file.
1#ifndef MSXYAMAHASFG_HH
2#define MSXYAMAHASFG_HH
3
4#include "MSXDevice.hh"
5#include "YM2151.hh"
6#include "YM2148.hh"
7#include "Rom.hh"
8#include "serialize_meta.hh"
9
10namespace openmsx {
11
12class MSXYamahaSFG final : public MSXDevice
13{
14public:
15 explicit MSXYamahaSFG(const DeviceConfig& config);
16
17 void reset(EmuTime::param time) override;
18 [[nodiscard]] byte readMem(word address, EmuTime::param time) override;
19 [[nodiscard]] byte peekMem(word address, EmuTime::param time) const override;
20 [[nodiscard]] const byte* getReadCacheLine(word start) const override;
21 void writeMem(word address, byte value, EmuTime::param time) override;
22 [[nodiscard]] byte* getWriteCacheLine(word start) override;
23 [[nodiscard]] byte readIRQVector() override;
24
25 template<typename Archive>
26 void serialize(Archive& ar, unsigned version);
27
28private:
29 void writeRegisterPort(byte value, EmuTime::param time);
30 void writeDataPort(byte value, EmuTime::param time);
31
32private:
33 Rom rom;
34 YM2151 ym2151;
35 YM2148 ym2148;
36 byte registerLatch;
37 byte irqVector;
38 byte irqVector2148;
39};
41
42} // namespace openmsx
43
44#endif
An MSXDevice is an emulated hardware component connected to the bus of the emulated MSX.
Definition MSXDevice.hh:36
void reset(EmuTime::param time) override
This method is called on reset.
byte readMem(word address, EmuTime::param time) override
Read a byte from a location at a certain time from this device.
void writeMem(word address, byte value, EmuTime::param time) override
Write a given byte to a given location at a certain time to this device.
byte * getWriteCacheLine(word start) override
Test that the memory in the interval [start, start + CacheLine::SIZE) is cacheable for writing.
byte readIRQVector() override
Gets IRQ vector used in IM2.
byte peekMem(word address, EmuTime::param time) const override
Read a byte from a given memory location.
const byte * getReadCacheLine(word start) const override
Test that the memory in the interval [start, start + CacheLine::SIZE) is cacheable for reading.
void serialize(Archive &ar, unsigned version)
This file implemented 3 utility functions:
Definition Autofire.cc:11
uint16_t word
16 bit unsigned integer
Definition openmsx.hh:29
#define SERIALIZE_CLASS_VERSION(CLASS, VERSION)