OXYGENHUB
◆ main openmsx / src / memory / MSXMemoryMapper.cc
888 B · C++ · last changed chore(): initial commit 1 month ago source blame history raw
1
#include "MSXMemoryMapper.hh"
2
3
#include "serialize.hh"
4
5
namespace openmsx {
6
7
MSXMemoryMapper::MSXMemoryMapper(const DeviceConfig& config)
8
	: MSXMemoryMapperBase(config)
9
{
10
}
11
12
void MSXMemoryMapper::writeIO(uint16_t port, byte value, EmuTime time)
13
{
14
	MSXMemoryMapperBase::writeIOImpl(port, value, time);
15
	byte page = port & 3;
16
	if (byte* data = checkedRam.getRWCacheLines(segmentOffset(page), 0x4000)) {
17
		fillDeviceRWCache(page * 0x4000, 0x4000, data);
18
	} else {
19
		invalidateDeviceRWCache(page * 0x4000, 0x4000);
20
	}
21
}
22
23
template<typename Archive>
24
void MSXMemoryMapper::serialize(Archive& ar, unsigned version)
25
{
26
	// use serializeInlinedBase instead of serializeBase for bw-compat savestates
27
	ar.template serializeInlinedBase<MSXMemoryMapperBase>(*this, version);
28
}
29
30
INSTANTIATE_SERIALIZE_METHODS(MSXMemoryMapper);
31
REGISTER_MSXDEVICE(MSXMemoryMapper, "MemoryMapper");
32
33
} // namespace openmsx