From cb8d322890caa3506af4fea27ddf073a427c333f Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 18 Aug 2016 17:36:29 -0400 Subject: [PATCH] Create address_space_debug_wrapper to deal with pedantic but common issue (nw) --- src/emu/emumem.h | 27 +++++++++++++++++++++++++++ src/mame/drivers/skylncr.cpp | 3 ++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/emu/emumem.h b/src/emu/emumem.h index f44e34f8060..c5ed0c10ba5 100644 --- a/src/emu/emumem.h +++ b/src/emu/emumem.h @@ -475,6 +475,33 @@ private: }; +// ======================> address_space_debug_wrapper + +// wrapper for temporarily setting the debug flag on a memory space (especially one being accessed through another space) +class address_space_debug_wrapper +{ +public: + // construction + address_space_debug_wrapper(address_space &space, bool debugger_access) + : m_target(space) + , m_prev_debugger_access(space.debugger_access()) + { + space.set_debugger_access(debugger_access); + } + + // destruction + ~address_space_debug_wrapper() { m_target.set_debugger_access(m_prev_debugger_access); } + + // getter + address_space &space() const { return m_target; } + +private: + // internal state + address_space &m_target; + const bool m_prev_debugger_access; +}; + + // ======================> memory_block // a memory block is a chunk of RAM associated with a range of memory in a device's address space diff --git a/src/mame/drivers/skylncr.cpp b/src/mame/drivers/skylncr.cpp index 84c3f6fa762..05c37b2127b 100644 --- a/src/mame/drivers/skylncr.cpp +++ b/src/mame/drivers/skylncr.cpp @@ -488,7 +488,8 @@ READ_LINE_MEMBER(skylncr_state::mbutrfly_prot_r) READ8_MEMBER(skylncr_state::bdream97_opcode_r) { - return m_maincpu->space(AS_PROGRAM).read_byte(offset) ^ 0x80; + address_space_debug_wrapper program(m_maincpu->space(AS_PROGRAM), space.debugger_access()); + return program.space().read_byte(offset) ^ 0x80; }