summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/4roses.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/4roses.cpp')
-rw-r--r--src/mame/drivers/4roses.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/mame/drivers/4roses.cpp b/src/mame/drivers/4roses.cpp
index c78616f59b5..0d78c02d030 100644
--- a/src/mame/drivers/4roses.cpp
+++ b/src/mame/drivers/4roses.cpp
@@ -200,9 +200,11 @@ public:
void _4roses(machine_config &config);
void rugby(machine_config &config);
private:
+ DECLARE_READ8_MEMBER(_4roses_opcode_r);
DECLARE_READ8_MEMBER(rugby_opcode_r);
void _4roses_map(address_map &map);
+ void _4roses_opcodes_map(address_map &map);
void rugby_map(address_map &map);
void rugby_opcodes_map(address_map &map);
@@ -232,6 +234,22 @@ void _4roses_state::_4roses_map(address_map &map)
map(0x6000, 0xffff).rom().region("maincpu", 0x6000);
}
+READ8_MEMBER(_4roses_state::_4roses_opcode_r)
+{
+ uint8_t data = m_maincpu->space(AS_PROGRAM).read_byte(offset);
+ if ((offset & 0x7c00) == 0x6400)
+ data = bitswap<8>(data ^ 0x3f, 3, 4, 2, 5, 1, 6, 0, 7);
+ else if ((offset & 0x7c00) == 0x6000)
+ data = bitswap<8>(data ^ 0x68, 4, 3, 2, 1, 0, 7, 6, 5);
+ return data;
+}
+
+void _4roses_state::_4roses_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).r(this, FUNC(_4roses_state::_4roses_opcode_r));
+ map(0x8000, 0xffff).rom().region("maincpu", 0x8000);
+}
+
void _4roses_state::rugby_map(address_map &map)
{
map(0x0000, 0x07ff).ram(); // AM_SHARE("nvram")
@@ -402,6 +420,7 @@ MACHINE_CONFIG_START(_4roses_state::_4roses)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M65C02, MASTER_CLOCK/8) /* 2MHz, guess */
MCFG_CPU_PROGRAM_MAP(_4roses_map)
+ MCFG_CPU_OPCODES_MAP(_4roses_opcodes_map)
// MCFG_NVRAM_ADD_0FILL("nvram")