diff options
Diffstat (limited to 'src/emu/emumem_heun.h')
-rw-r--r-- | src/emu/emumem_heun.h | 54 |
1 files changed, 34 insertions, 20 deletions
diff --git a/src/emu/emumem_heun.h b/src/emu/emumem_heun.h index 02a79d825ab..69a97e84f37 100644 --- a/src/emu/emumem_heun.h +++ b/src/emu/emumem_heun.h @@ -1,34 +1,42 @@ // license:BSD-3-Clause // copyright-holders:Olivier Galibert +#ifndef MAME_EMU_EMUMEM_HEUN_H +#define MAME_EMU_EMUMEM_HEUN_H + +#pragma once // handler_entry_read_unmapped/handler_entry_write_unmapped // Logs an unmapped access -template<int Width, int AddrShift, int Endian> class handler_entry_read_unmapped : public handler_entry_read<Width, AddrShift, Endian> +template<int Width, int AddrShift> class handler_entry_read_unmapped : public handler_entry_read<Width, AddrShift> { public: - using uX = typename emu::detail::handler_entry_size<Width>::uX; - using inh = handler_entry_read<Width, AddrShift, Endian>; + using uX = emu::detail::handler_entry_size_t<Width>; - handler_entry_read_unmapped(address_space *space) : handler_entry_read<Width, AddrShift, Endian>(space, 0) {} + handler_entry_read_unmapped(address_space *space, u16 flags) : handler_entry_read<Width, AddrShift>(space, handler_entry::F_UNMAP | flags) {} ~handler_entry_read_unmapped() = default; - uX read(offs_t offset, uX mem_mask) override; + uX read(offs_t offset, uX mem_mask) const override; + uX read_interruptible(offs_t offset, uX mem_mask) const override; + std::pair<uX, u16> read_flags(offs_t offset, uX mem_mask) const override; + u16 lookup_flags(offs_t offset, uX mem_mask) const override; std::string name() const override; }; -template<int Width, int AddrShift, int Endian> class handler_entry_write_unmapped : public handler_entry_write<Width, AddrShift, Endian> +template<int Width, int AddrShift> class handler_entry_write_unmapped : public handler_entry_write<Width, AddrShift> { public: - using uX = typename emu::detail::handler_entry_size<Width>::uX; - using inh = handler_entry_write<Width, AddrShift, Endian>; + using uX = emu::detail::handler_entry_size_t<Width>; - handler_entry_write_unmapped(address_space *space) : handler_entry_write<Width, AddrShift, Endian>(space, 0) {} + handler_entry_write_unmapped(address_space *space, u16 flags) : handler_entry_write<Width, AddrShift>(space, handler_entry::F_UNMAP | flags) {} ~handler_entry_write_unmapped() = default; - void write(offs_t offset, uX data, uX mem_mask) override; + void write(offs_t offset, uX data, uX mem_mask) const override; + void write_interruptible(offs_t offset, uX data, uX mem_mask) const override; + u16 write_flags(offs_t offset, uX data, uX mem_mask) const override; + u16 lookup_flags(offs_t offset, uX mem_mask) const override; std::string name() const override; }; @@ -39,30 +47,36 @@ public: // Drops an unmapped access silently -template<int Width, int AddrShift, int Endian> class handler_entry_read_nop : public handler_entry_read<Width, AddrShift, Endian> +template<int Width, int AddrShift> class handler_entry_read_nop : public handler_entry_read<Width, AddrShift> { public: - using uX = typename emu::detail::handler_entry_size<Width>::uX; - using inh = handler_entry_read<Width, AddrShift, Endian>; + using uX = emu::detail::handler_entry_size_t<Width>; - handler_entry_read_nop(address_space *space) : handler_entry_read<Width, AddrShift, Endian>(space, 0) {} + handler_entry_read_nop(address_space *space, u16 flags) : handler_entry_read<Width, AddrShift>(space, flags) {} ~handler_entry_read_nop() = default; - uX read(offs_t offset, uX mem_mask) override; + uX read(offs_t offset, uX mem_mask) const override; + uX read_interruptible(offs_t offset, uX mem_mask) const override; + std::pair<uX, u16> read_flags(offs_t offset, uX mem_mask) const override; + u16 lookup_flags(offs_t offset, uX mem_mask) const override; std::string name() const override; }; -template<int Width, int AddrShift, int Endian> class handler_entry_write_nop : public handler_entry_write<Width, AddrShift, Endian> +template<int Width, int AddrShift> class handler_entry_write_nop : public handler_entry_write<Width, AddrShift> { public: - using uX = typename emu::detail::handler_entry_size<Width>::uX; - using inh = handler_entry_write<Width, AddrShift, Endian>; + using uX = emu::detail::handler_entry_size_t<Width>; - handler_entry_write_nop(address_space *space) : handler_entry_write<Width, AddrShift, Endian>(space, 0) {} + handler_entry_write_nop(address_space *space, u16 flags) : handler_entry_write<Width, AddrShift>(space, flags) {} ~handler_entry_write_nop() = default; - void write(offs_t offset, uX data, uX mem_mask) override; + void write(offs_t offset, uX data, uX mem_mask) const override; + void write_interruptible(offs_t offset, uX data, uX mem_mask) const override; + u16 write_flags(offs_t offset, uX data, uX mem_mask) const override; + u16 lookup_flags(offs_t offset, uX mem_mask) const override; std::string name() const override; }; + +#endif // MAME_EMU_EMUMEM_HEUN_H |