diff options
author | 2016-06-24 22:34:13 -0400 | |
---|---|---|
committer | 2016-06-24 22:34:13 -0400 | |
commit | 38c4b762f03769155fb8f8d2ce7c9dd47ece5f46 (patch) | |
tree | da1ed7105cd7d23f65cd8370d849be64922d2259 /src/emu/didisasm.cpp | |
parent | 9fccecfcf393e8d23e307e3a1a1fc590829b2136 (diff) |
Move disasm overrides into interface, reducing driver-debugger dependencies (nw)
Diffstat (limited to 'src/emu/didisasm.cpp')
-rw-r--r-- | src/emu/didisasm.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/emu/didisasm.cpp b/src/emu/didisasm.cpp index 9abca9e3f96..ef3882cba8b 100644 --- a/src/emu/didisasm.cpp +++ b/src/emu/didisasm.cpp @@ -21,6 +21,7 @@ device_disasm_interface::device_disasm_interface(const machine_config &mconfig, device_t &device) : device_interface(device, "disasm") + , m_dasm_override(nullptr) { } @@ -32,3 +33,35 @@ device_disasm_interface::device_disasm_interface(const machine_config &mconfig, device_disasm_interface::~device_disasm_interface() { } + + +//------------------------------------------------- +// static_set_dasm_override - configuration +// helper to override disassemble function +//------------------------------------------------- + +void device_disasm_interface::static_set_dasm_override(device_t &device, dasm_override_func dasm_override) +{ + device_disasm_interface *dasm; + if (!device.interface(dasm)) + throw emu_fatalerror("MCFG_DEVICE_DISASSEMBLE_OVERRIDE called on device '%s' with no disasm interface", device.tag()); + dasm->m_dasm_override = dasm_override; +} + + +//------------------------------------------------- +// disassemble - interface for disassembly +//------------------------------------------------- + +offs_t device_disasm_interface::disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) +{ + offs_t result = 0; + + // check for disassembler override + if (m_dasm_override != nullptr) + result = (*m_dasm_override)(device(), buffer, pc, oprom, opram, options); + if (result == 0) + result = disasm_disassemble(buffer, pc, oprom, opram, options); + + return result; +} |