OXYGENHUB
◆ main openmsx / src / memory / RomMajutsushi.cc
1.1 KiB · C++ · last changed chore(): initial commit 1 month ago source blame history raw
e8555c89 Andy McCall 1
// Mapper for "Hai no Majutsushi" from Konami.
2
// It's a Konami mapper with a DAC.
3
4
#include "RomMajutsushi.hh"
5
#include "serialize.hh"
6
7
namespace openmsx {
8
9
RomMajutsushi::RomMajutsushi(const DeviceConfig& config, Rom&& rom_)
10
	: RomKonami(config, std::move(rom_))
11
	, dac("Majutsushi-DAC", "Hai no Majutsushi's DAC", config)
12
{
13
	reset(getCurrentTime());
14
}
15
16
void RomMajutsushi::reset(EmuTime time)
17
{
18
	RomKonami::reset(time);
19
	dac.reset(time);
20
}
21
22
void RomMajutsushi::writeMem(uint16_t address, byte value, EmuTime time)
23
{
24
	if (0x5000 <= address && address < 0x6000) {
25
		dac.writeDAC(value, time);
26
	} else {
27
		RomKonami::writeMem(address, value, time);
28
	}
29
}
30
31
byte* RomMajutsushi::getWriteCacheLine(uint16_t address)
32
{
33
	return (0x5000 <= address && address < 0x6000)
34
		? nullptr : RomKonami::getWriteCacheLine(address);
35
}
36
37
template<typename Archive>
38
void RomMajutsushi::serialize(Archive& ar, unsigned /*version*/)
39
{
40
	ar.template serializeBase<RomKonami>(*this);
41
	ar.serialize("DAC", dac);
42
}
43
INSTANTIATE_SERIALIZE_METHODS(RomMajutsushi);
44
REGISTER_MSXDEVICE(RomMajutsushi, "RomMajutsushi");
45
46
} // namespace openmsx