diff options
Diffstat (limited to 'src/devices/cpu/superfx/sfx_dasm.h')
-rw-r--r-- | src/devices/cpu/superfx/sfx_dasm.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/devices/cpu/superfx/sfx_dasm.h b/src/devices/cpu/superfx/sfx_dasm.h new file mode 100644 index 00000000000..4bd324c9e9d --- /dev/null +++ b/src/devices/cpu/superfx/sfx_dasm.h @@ -0,0 +1,36 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#ifndef MAME_CPU_SUPERFX_SFX_DASM_H +#define MAME_CPU_SUPERFX_SFX_DASM_H + +#pragma once + +class superfx_disassembler : public util::disasm_interface +{ +public: + enum { + SUPERFX_SFR_ALT = 0x0300, // ALT Mode, both bits + SUPERFX_SFR_ALT0 = 0x0000, // ALT Mode, no bits + SUPERFX_SFR_ALT1 = 0x0100, // ALT Mode, bit 0 + SUPERFX_SFR_ALT2 = 0x0200, // ALT Mode, bit 1 + SUPERFX_SFR_ALT3 = 0x0300 // ALT Mode, both bits (convenience dupe) + }; + + struct config { + virtual ~config() = default; + + virtual u16 get_alt() const = 0; + }; + + superfx_disassembler(config *conf); + virtual ~superfx_disassembler() = default; + + virtual u32 opcode_alignment() const override; + virtual offs_t disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms) override; + +private: + config *m_config; +}; + +#endif |