OXYGENHUB
◆ main openmsx / src / sound / MSXYamahaSFG.hh
1.1 KiB · C++ · last changed chore(): initial commit 1 month ago source blame history raw
e8555c89 Andy McCall 1
#ifndef MSXYAMAHASFG_HH
2
#define MSXYAMAHASFG_HH
3
4
#include "YM2151.hh"
5
6
#include "MSXDevice.hh"
7
#include "Rom.hh"
8
#include "YM2148.hh"
9
#include "serialize_meta.hh"
10
11
namespace openmsx {
12
13
class MSXYamahaSFG final : public MSXDevice
14
{
15
public:
16
	explicit MSXYamahaSFG(DeviceConfig& config);
17
18
	void reset(EmuTime time) override;
19
	[[nodiscard]] byte readMem(uint16_t address, EmuTime time) override;
20
	[[nodiscard]] byte peekMem(uint16_t address, EmuTime time) const override;
21
	[[nodiscard]] const byte* getReadCacheLine(uint16_t start) const override;
22
	void writeMem(uint16_t address, byte value, EmuTime time) override;
23
	[[nodiscard]] byte* getWriteCacheLine(uint16_t start) override;
24
	[[nodiscard]] byte readIRQVector() override;
25
26
	template<typename Archive>
27
	void serialize(Archive& ar, unsigned version);
28
29
private:
30
	void writeRegisterPort(byte value, EmuTime time);
31
	void writeDataPort(byte value, EmuTime time);
32
33
private:
34
	Rom rom;
35
	YM2151 ym2151;
36
	YM2148 ym2148;
37
	byte registerLatch;
38
	byte irqVector;
39
	byte irqVector2148;
40
};
41
SERIALIZE_CLASS_VERSION(MSXYamahaSFG, 2);
42
43
} // namespace openmsx
44
45
#endif