summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/rbmk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/rbmk.cpp')
-rw-r--r--src/mame/drivers/rbmk.cpp80
1 files changed, 42 insertions, 38 deletions
diff --git a/src/mame/drivers/rbmk.cpp b/src/mame/drivers/rbmk.cpp
index a2d7b9fbfa9..c28d8b78fcd 100644
--- a/src/mame/drivers/rbmk.cpp
+++ b/src/mame/drivers/rbmk.cpp
@@ -166,42 +166,45 @@ WRITE16_MEMBER(rbmk_state::eeprom_w)
}
-ADDRESS_MAP_START(rbmk_state::rbmk_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_WRITENOP
- AM_RANGE(0x100000, 0x10ffff) AM_RAM
- AM_RANGE(0x500000, 0x50ffff) AM_RAM
- AM_RANGE(0x940000, 0x940fff) AM_RAM AM_SHARE("vidram2")
- AM_RANGE(0x980300, 0x983fff) AM_RAM // 0x2048 words ???, byte access
- AM_RANGE(0x900000, 0x900fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x9c0000, 0x9c0fff) AM_RAM AM_SHARE("vidram")
- AM_RANGE(0xb00000, 0xb00001) AM_WRITE(eeprom_w)
- AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(dip_mux_r, dip_mux_w)
- AM_RANGE(0xc08000, 0xc08001) AM_READ_PORT("IN1") AM_WRITE(tilebank_w)
- AM_RANGE(0xc10000, 0xc10001) AM_READ_PORT("IN2")
- AM_RANGE(0xc18080, 0xc18081) AM_READ(unk_r)
- AM_RANGE(0xc20000, 0xc20001) AM_READ_PORT("IN3")
- AM_RANGE(0xc28000, 0xc28001) AM_WRITE(unk_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rbmk_state::rbspm_mem)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x200000, 0x200001) AM_WRITE(eeprom_w) // wrong
- AM_RANGE(0x300000, 0x300001) AM_READWRITE(dip_mux_r, dip_mux_w)
- AM_RANGE(0x308000, 0x308001) AM_READ_PORT("IN1") AM_WRITE(tilebank_w) // ok
- AM_RANGE(0x310000, 0x310001) AM_READ_PORT("IN2")
- AM_RANGE(0x318080, 0x318081) AM_READ(unk_r)
- AM_RANGE(0x320000, 0x320001) AM_READ_PORT("IN3")
- AM_RANGE(0x328000, 0x328001) AM_WRITE(unk_w)
- AM_RANGE(0x500000, 0x50ffff) AM_RAM
- AM_RANGE(0x900000, 0x900fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // if removed fails gfx test?
- AM_RANGE(0x940000, 0x940fff) AM_RAM AM_SHARE("vidram2") // if removed fails palette test?
- AM_RANGE(0x980300, 0x983fff) AM_RAM // 0x2048 words ???, byte access, u25 and u26 according to test mode
- AM_RANGE(0x9c0000, 0x9c0fff) AM_RAM AM_SHARE("vidram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(rbmk_state::mcu_mem)
+void rbmk_state::rbmk_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom().nopw();
+ map(0x100000, 0x10ffff).ram();
+ map(0x500000, 0x50ffff).ram();
+ map(0x940000, 0x940fff).ram().share("vidram2");
+ map(0x980300, 0x983fff).ram(); // 0x2048 words ???, byte access
+ map(0x900000, 0x900fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x9c0000, 0x9c0fff).ram().share("vidram");
+ map(0xb00000, 0xb00001).w(this, FUNC(rbmk_state::eeprom_w));
+ map(0xc00000, 0xc00001).rw(this, FUNC(rbmk_state::dip_mux_r), FUNC(rbmk_state::dip_mux_w));
+ map(0xc08000, 0xc08001).portr("IN1").w(this, FUNC(rbmk_state::tilebank_w));
+ map(0xc10000, 0xc10001).portr("IN2");
+ map(0xc18080, 0xc18081).r(this, FUNC(rbmk_state::unk_r));
+ map(0xc20000, 0xc20001).portr("IN3");
+ map(0xc28000, 0xc28001).w(this, FUNC(rbmk_state::unk_w));
+}
+
+void rbmk_state::rbspm_mem(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x200000, 0x200001).w(this, FUNC(rbmk_state::eeprom_w)); // wrong
+ map(0x300000, 0x300001).rw(this, FUNC(rbmk_state::dip_mux_r), FUNC(rbmk_state::dip_mux_w));
+ map(0x308000, 0x308001).portr("IN1").w(this, FUNC(rbmk_state::tilebank_w)); // ok
+ map(0x310000, 0x310001).portr("IN2");
+ map(0x318080, 0x318081).r(this, FUNC(rbmk_state::unk_r));
+ map(0x320000, 0x320001).portr("IN3");
+ map(0x328000, 0x328001).w(this, FUNC(rbmk_state::unk_w));
+ map(0x500000, 0x50ffff).ram();
+ map(0x900000, 0x900fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // if removed fails gfx test?
+ map(0x940000, 0x940fff).ram().share("vidram2"); // if removed fails palette test?
+ map(0x980300, 0x983fff).ram(); // 0x2048 words ???, byte access, u25 and u26 according to test mode
+ map(0x9c0000, 0x9c0fff).ram().share("vidram");
+}
+
+void rbmk_state::mcu_mem(address_map &map)
+{
// AM_RANGE(0x0000, 0x0fff) AM_ROM
-ADDRESS_MAP_END
+}
READ8_MEMBER(rbmk_state::mcu_io_r)
{
@@ -238,9 +241,10 @@ WRITE8_MEMBER(rbmk_state::mcu_io_mux_w)
m_mux_data = ~data;
}
-ADDRESS_MAP_START(rbmk_state::mcu_io)
- AM_RANGE(0x0ff00, 0x0ffff) AM_READWRITE(mcu_io_r, mcu_io_w )
-ADDRESS_MAP_END
+void rbmk_state::mcu_io(address_map &map)
+{
+ map(0x0ff00, 0x0ffff).rw(this, FUNC(rbmk_state::mcu_io_r), FUNC(rbmk_state::mcu_io_w));
+}
static INPUT_PORTS_START( rbmk )
PORT_START("IN1") /* 16bit */