20 virtual void write(
unsigned address,
byte value);
29 "MapperReadBackBits",
"largest");
32 }
else if (type ==
"largest") {
35 throw FatalError(
"Unknown mapper type: \"" + type +
"\".");
42 , engineMask(calcEngineMask(getMotherBoard()))
52 void MSXMapperIO::updateMask()
55 unsigned largest = (mapperSizes.empty()) ? 1 : mapperSizes.back();
61 auto it = upper_bound(mapperSizes.begin(), mapperSizes.end(), blocks);
62 mapperSizes.insert(it, blocks);
68 auto it = find(mapperSizes.begin(), mapperSizes.end(), blocks);
69 assert(it != mapperSizes.end());
70 mapperSizes.erase(it);
79 for (
unsigned i = 0; i < 4; ++i) {
96 write(port & 0x03, value);
101 return registers[bank];
104 void MSXMapperIO::write(
unsigned address,
byte value)
106 registers[address] = value;
116 "Memory mapper registers", 4)
117 , mapperIO(mapperIO_)
128 mapperIO.write(address, value);
132 template<
typename Archive>
135 ar.serialize(
"registers", registers);