summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/saitek_simultano.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/saitek_simultano.cpp')
-rw-r--r--src/mame/drivers/saitek_simultano.cpp41
1 files changed, 16 insertions, 25 deletions
diff --git a/src/mame/drivers/saitek_simultano.cpp b/src/mame/drivers/saitek_simultano.cpp
index 9043d88b5c1..853d94a4701 100644
--- a/src/mame/drivers/saitek_simultano.cpp
+++ b/src/mame/drivers/saitek_simultano.cpp
@@ -31,7 +31,6 @@ TODO:
#include "cpu/m6502/m65c02.h"
#include "cpu/m6502/r65c02.h"
-#include "machine/bankdev.h"
#include "machine/nvram.h"
#include "machine/sensorboard.h"
#include "sound/dac.h"
@@ -79,7 +78,7 @@ protected:
private:
// devices/pointers
required_device<cpu_device> m_maincpu;
- required_device<address_map_bank_device> m_rombank;
+ memory_view m_rombank;
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<pwm_display_device> m_lcd_pwm;
@@ -88,9 +87,8 @@ private:
required_ioport_array<8+1> m_inputs;
output_finder<16, 34> m_out_lcd;
- void main_map(address_map &map);
- void simultano_rombank_map(address_map &map);
- void cc2150_rombank_map(address_map &map);
+ void simultano_map(address_map &map);
+ void cc2150_map(address_map &map);
void power_off();
void lcd_pwm_w(offs_t offset, u8 data);
@@ -120,7 +118,7 @@ void simultano_state::machine_start()
void simultano_state::machine_reset()
{
m_power = true;
- m_rombank->set_bank(0);
+ m_rombank.select(0);
}
@@ -211,7 +209,7 @@ void simultano_state::control_w(u8 data)
m_control = data;
// d0,d1: rombank
- m_rombank->set_bank(bitswap<2>(data,0,1));
+ m_rombank.select(bitswap<2>(data,0,1));
// d6 falling edge: power-off request
if (~data & prev & 0x40)
@@ -224,7 +222,7 @@ void simultano_state::control_w(u8 data)
Address Maps
******************************************************************************/
-void simultano_state::main_map(address_map &map)
+void simultano_state::cc2150_map(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
map(0x2000, 0x2000).w(FUNC(simultano_state::select_w));
@@ -233,19 +231,18 @@ void simultano_state::main_map(address_map &map)
map(0x2600, 0x2600).rw(FUNC(simultano_state::control_r), FUNC(simultano_state::control_w));
//map(0x4000, 0x5fff).noprw(); // tries to access RAM, unpopulated on PCB
map(0x6000, 0x607f).rw("lcd", FUNC(sed1502_device::read), FUNC(sed1502_device::write));
- map(0x8000, 0xffff).m(m_rombank, FUNC(address_map_bank_device::amap8));
-}
-void simultano_state::cc2150_rombank_map(address_map &map)
-{
- map.unmap_value_high();
- map(0x00000, 0x0ffff).rom().region("maincpu", 0);
+ map(0x8000, 0xffff).view(m_rombank);
+ m_rombank[0](0x8000, 0xffff).rom().region("maincpu", 0x0000);
+ m_rombank[1](0x8000, 0xffff).rom().region("maincpu", 0x8000);
+ m_rombank[2](0x8000, 0xffff).lr8(NAME([]() { return 0xff; }));
+ m_rombank[3](0x8000, 0xffff).lr8(NAME([]() { return 0xff; }));
}
-void simultano_state::simultano_rombank_map(address_map &map)
+void simultano_state::simultano_map(address_map &map)
{
- cc2150_rombank_map(map);
- map(0x10000, 0x17fff).r("extrom", FUNC(generic_slot_device::read_rom));
+ cc2150_map(map);
+ m_rombank[2](0x8000, 0xffff).r("extrom", FUNC(generic_slot_device::read_rom));
}
@@ -322,13 +319,9 @@ void simultano_state::cc2150(machine_config &config)
{
/* basic machine hardware */
R65C02(config, m_maincpu, 3_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &simultano_state::main_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &simultano_state::cc2150_map);
m_maincpu->set_periodic_int(FUNC(simultano_state::irq0_line_hold), attotime::from_hz(91.6)); // measured
- ADDRESS_MAP_BANK(config, m_rombank);
- m_rombank->set_map(&simultano_state::cc2150_rombank_map);
- m_rombank->set_options(ENDIANNESS_LITTLE, 8, 17, 0x8000);
-
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
@@ -361,11 +354,9 @@ void simultano_state::simultano(machine_config &config)
/* basic machine hardware */
M65C02(config.replace(), m_maincpu, 5_MHz_XTAL);
- m_maincpu->set_addrmap(AS_PROGRAM, &simultano_state::main_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &simultano_state::simultano_map);
m_maincpu->set_periodic_int(FUNC(simultano_state::irq0_line_hold), attotime::from_hz(76)); // approximation
- m_rombank->set_map(&simultano_state::simultano_rombank_map);
-
/* extension rom */
GENERIC_CARTSLOT(config, "extrom", generic_plain_slot, "saitek_egr");
SOFTWARE_LIST(config, "cart_list").set_original("saitek_egr").set_filter("egr2");