diff options
Diffstat (limited to 'src/mame/drivers/rbmk.cpp')
-rw-r--r-- | src/mame/drivers/rbmk.cpp | 80 |
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 */ |