openMSX
RomMajutsushi.cc
Go to the documentation of this file.
1 // Mapper for "Hai no Majutsushi" from Konami.
2 // It's a Konami mapper with a DAC.
3 
4 #include "RomMajutsushi.hh"
5 #include "DACSound8U.hh"
6 #include "Rom.hh"
7 #include "serialize.hh"
8 #include "memory.hh"
9 
10 namespace openmsx {
11 
12 RomMajutsushi::RomMajutsushi(const DeviceConfig& config, std::unique_ptr<Rom> rom)
13  : RomKonami(config, std::move(rom))
14  , dac(make_unique<DACSound8U>(
15  "Majutsushi-DAC", "Hai no Majutsushi's DAC", config))
16 {
17 }
18 
20 {
21 }
22 
24 {
25  RomKonami::reset(time);
26  dac->reset(time);
27 }
28 
29 void RomMajutsushi::writeMem(word address, byte value, EmuTime::param time)
30 {
31  if (0x5000 <= address && address < 0x6000) {
32  dac->writeDAC(value, time);
33  } else {
34  RomKonami::writeMem(address, value, time);
35  }
36 }
37 
39 {
40  return (0x5000 <= address && address < 0x6000)
41  ? nullptr : RomKonami::getWriteCacheLine(address);
42 }
43 
44 template<typename Archive>
45 void RomMajutsushi::serialize(Archive& ar, unsigned /*version*/)
46 {
47  ar.template serializeBase<RomKonami>(*this);
48  ar.serialize("DAC", *dac);
49 }
51 REGISTER_MSXDEVICE(RomMajutsushi, "RomMajutsushi");
52 
53 } // namespace openmsx