summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/decocpu7.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/decocpu7.cpp')
-rw-r--r--src/mame/machine/decocpu7.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/mame/machine/decocpu7.cpp b/src/mame/machine/decocpu7.cpp
index 332cea3ac45..50144063bb4 100644
--- a/src/mame/machine/decocpu7.cpp
+++ b/src/mame/machine/decocpu7.cpp
@@ -40,3 +40,22 @@ void deco_cpu7_device::mi_decrypt::write(uint16_t adr, uint8_t val)
program->write_byte(adr, val);
had_written = true;
}
+
+util::disasm_interface *deco_cpu7_device::create_disassembler()
+{
+ return new disassembler(static_cast<mi_decrypt *>(mintf));
+}
+
+deco_cpu7_device::disassembler::disassembler(mi_decrypt *mi) : mintf(mi)
+{
+}
+
+u32 deco_cpu7_device::disassembler::interface_flags() const
+{
+ return SPLIT_DECRYPTION;
+}
+
+u8 deco_cpu7_device::disassembler::decrypt8(u8 value, offs_t pc, bool opcode) const
+{
+ return opcode && mintf->had_written && ((pc & 0x104) == 0x104) ? BITSWAP8(value,6,5,3,4,2,7,1,0) : value;
+}