diff options
author | hap <happppp@users.noreply.github.com> | 2020-06-09 01:11:04 +0200 |
---|---|---|
committer | hap <happppp@users.noreply.github.com> | 2020-06-09 01:11:32 +0200 |
commit | d9ee5234f7622a49acaae68fb51ec89638f356ab (patch) | |
tree | 8f2b50fedea97508cc04866ab21d9a608e8e1579 | |
parent | 3f5784f3a9e9e4cf8580f15af79fc3f23a2a230c (diff) |
sensorboard: only load last position when the chesscomputer expects it (nw)
-rw-r--r-- | src/devices/machine/sensorboard.cpp | 8 | ||||
-rw-r--r-- | src/devices/machine/sensorboard.h | 2 | ||||
-rw-r--r-- | src/mame/drivers/cxg_sphinx40.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/fidel_eag68k.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/fidel_elite.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/mephisto_berlin.cpp | 2 | ||||
-rw-r--r-- | src/mame/drivers/mephisto_modena.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/mephisto_modular.cpp | 5 | ||||
-rw-r--r-- | src/mame/drivers/mephisto_modular_tm.cpp | 2 | ||||
-rw-r--r-- | src/mame/drivers/novag_cforte.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/novag_const.cpp | 2 | ||||
-rw-r--r-- | src/mame/drivers/novag_diablo.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/novag_sexpert.cpp | 2 | ||||
-rw-r--r-- | src/mame/drivers/saitek_corona.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/saitek_mark5.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/saitek_risc2500.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/saitek_simultano.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/saitek_stratos.cpp | 1 | ||||
-rw-r--r-- | src/mame/drivers/tasc.cpp | 1 |
19 files changed, 32 insertions, 3 deletions
diff --git a/src/devices/machine/sensorboard.cpp b/src/devices/machine/sensorboard.cpp index 34f713d5c66..27c16277448 100644 --- a/src/devices/machine/sensorboard.cpp +++ b/src/devices/machine/sensorboard.cpp @@ -79,6 +79,7 @@ sensorboard_device::sensorboard_device(const machine_config &mconfig, const char m_custom_spawn_cb(*this), m_custom_output_cb(*this) { + m_nvram_on = false; m_nosensors = false; m_magnets = false; m_inductive = false; @@ -202,8 +203,13 @@ void sensorboard_device::device_reset() { cancel_sensor(); cancel_hand(); - undo_reset(); + if (!m_nvram_on) + { + clear_board(); + m_custom_init_cb(0); + } + undo_reset(); refresh(); } diff --git a/src/devices/machine/sensorboard.h b/src/devices/machine/sensorboard.h index fcaea539163..b01a82a19be 100644 --- a/src/devices/machine/sensorboard.h +++ b/src/devices/machine/sensorboard.h @@ -33,6 +33,7 @@ public: sensorboard_device &set_spawnpoints(u8 i) { m_maxspawn = i; m_maxid = i; return *this; } // number of piece spawnpoints, max 16 sensorboard_device &set_max_id(u8 i) { m_maxid = i; return *this; } // maximum piece id (if larger than set_spawnpoints) sensorboard_device &set_delay(attotime delay) { m_sensordelay = delay; return *this; } // delay when activating a sensor (like PORT_IMPULSE), set to attotime::never to disable + sensorboard_device &set_nvram(bool b) { m_nvram_on = b; return *this; } // load last board position on start sensorboard_device &set_ui_enable(bool b) { if (!b) m_maxspawn = 0; m_ui_enabled = (b) ? 3 : 0; return *this; } // enable UI inputs sensorboard_device &set_mod_enable(bool b) { if (b) m_ui_enabled |= 1; else m_ui_enabled &= 2; return *this; } // enable modifier keys @@ -124,6 +125,7 @@ private: u32 m_usize; void nvram_init(nvram_device &nvram, void *data, size_t size); + bool m_nvram_on; emu_timer *m_undotimer; TIMER_CALLBACK_MEMBER(undo_tick); diff --git a/src/mame/drivers/cxg_sphinx40.cpp b/src/mame/drivers/cxg_sphinx40.cpp index b421d629582..30ca911f72d 100644 --- a/src/mame/drivers/cxg_sphinx40.cpp +++ b/src/mame/drivers/cxg_sphinx40.cpp @@ -292,6 +292,7 @@ void sphinx40_state::sphinx40(machine_config &config) SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(150)); + m_board->set_nvram(true); /* video hardware */ HD61603(config, m_lcd, 0); diff --git a/src/mame/drivers/fidel_eag68k.cpp b/src/mame/drivers/fidel_eag68k.cpp index a4e629e0a98..c2d9a234842 100644 --- a/src/mame/drivers/fidel_eag68k.cpp +++ b/src/mame/drivers/fidel_eag68k.cpp @@ -623,6 +623,7 @@ void eag_state::eag_base(machine_config &config) SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(150)); + m_board->set_nvram(true); /* video hardware */ PWM_DISPLAY(config, m_display).set_size(9, 16); diff --git a/src/mame/drivers/fidel_elite.cpp b/src/mame/drivers/fidel_elite.cpp index 216b84c21c1..f2f2b326b7d 100644 --- a/src/mame/drivers/fidel_elite.cpp +++ b/src/mame/drivers/fidel_elite.cpp @@ -466,6 +466,7 @@ void elite_state::eas(machine_config &config) m_ppi8255->tri_pc_callback().set_constant(0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + m_board->set_nvram(true); config.set_default_layout(layout_fidel_eas); } diff --git a/src/mame/drivers/mephisto_berlin.cpp b/src/mame/drivers/mephisto_berlin.cpp index 32394831413..750510734ea 100644 --- a/src/mame/drivers/mephisto_berlin.cpp +++ b/src/mame/drivers/mephisto_berlin.cpp @@ -138,6 +138,8 @@ void berlin_state::berlin(machine_config &config) ADDRESS_MAP_BANK(config, "nvram_map").set_map(&berlin_state::nvram_map).set_options(ENDIANNESS_BIG, 8, 13); MEPHISTO_BUTTONS_BOARD(config, m_board); + subdevice<sensorboard_device>("board:board")->set_nvram(true); + MEPHISTO_DISPLAY_MODULE2(config, "display"); config.set_default_layout(layout_mephisto_berlin); } diff --git a/src/mame/drivers/mephisto_modena.cpp b/src/mame/drivers/mephisto_modena.cpp index 30e5db10b37..8b5f346d07c 100644 --- a/src/mame/drivers/mephisto_modena.cpp +++ b/src/mame/drivers/mephisto_modena.cpp @@ -181,6 +181,7 @@ void mephisto_modena_state::modena(machine_config &config) SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(150)); + m_board->set_nvram(true); /* video hardware */ PWM_DISPLAY(config, m_display).set_size(3, 8); diff --git a/src/mame/drivers/mephisto_modular.cpp b/src/mame/drivers/mephisto_modular.cpp index f179a6ed8ae..25b77ce35f5 100644 --- a/src/mame/drivers/mephisto_modular.cpp +++ b/src/mame/drivers/mephisto_modular.cpp @@ -410,8 +410,9 @@ void mmodular_state::alm16(machine_config &config) ADDRESS_MAP_BANK(config, "nvram_map").set_map(&mmodular_state::nvram_map).set_options(ENDIANNESS_BIG, 8, 13); MEPHISTO_SENSORS_BOARD(config, m_board); - m_board->subdevice<sensorboard_device>("board")->set_spawnpoints(12+2); // 2 jokers - m_board->subdevice<sensorboard_device>("board")->spawn_cb().set(FUNC(mmodular_state::spawn_cb)); + subdevice<sensorboard_device>("board:board")->set_spawnpoints(12+2); // 2 jokers + subdevice<sensorboard_device>("board:board")->spawn_cb().set(FUNC(mmodular_state::spawn_cb)); + subdevice<sensorboard_device>("board:board")->set_nvram(true); TIMER(config, "bav_busy").configure_generic(nullptr); diff --git a/src/mame/drivers/mephisto_modular_tm.cpp b/src/mame/drivers/mephisto_modular_tm.cpp index 06a2fd59fd8..81bfd0ea1d2 100644 --- a/src/mame/drivers/mephisto_modular_tm.cpp +++ b/src/mame/drivers/mephisto_modular_tm.cpp @@ -213,6 +213,8 @@ void mmtm_state::mmtm_v(machine_config &config) ADDRESS_MAP_BANK(config, "nvram_map").set_map(&mmtm_state::nvram_map).set_options(ENDIANNESS_BIG, 8, 13); MEPHISTO_SENSORS_BOARD(config, "board"); + subdevice<sensorboard_device>("board:board")->set_nvram(true); + MEPHISTO_DISPLAY_MODULE2(config, "display"); config.set_default_layout(layout_mephisto_modular_tm); } diff --git a/src/mame/drivers/novag_cforte.cpp b/src/mame/drivers/novag_cforte.cpp index a6673585ae6..393c5859699 100644 --- a/src/mame/drivers/novag_cforte.cpp +++ b/src/mame/drivers/novag_cforte.cpp @@ -259,6 +259,7 @@ void cforte_state::cforte(machine_config &config) SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(200)); + m_board->set_nvram(true); /* video hardware */ HLCD0538(config, m_lcd).write_cols().set(FUNC(cforte_state::lcd_output_w)); diff --git a/src/mame/drivers/novag_const.cpp b/src/mame/drivers/novag_const.cpp index b08053c59c6..d9ef2654c6c 100644 --- a/src/mame/drivers/novag_const.cpp +++ b/src/mame/drivers/novag_const.cpp @@ -377,6 +377,7 @@ void const_state::ssensor4(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &const_state::ssensor4_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); + m_board->set_nvram(true); config.set_default_layout(layout_novag_ssensor4); } @@ -447,6 +448,7 @@ void const_state::sconst(machine_config &config) m_irq_on->set_start_delay(m_irq_on->period() - attotime::from_nsec(10200)); // irq active for 10.2us NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); + m_board->set_nvram(true); config.set_default_layout(layout_novag_supercon); } diff --git a/src/mame/drivers/novag_diablo.cpp b/src/mame/drivers/novag_diablo.cpp index 2b28c56d7e0..2f9939ee7f2 100644 --- a/src/mame/drivers/novag_diablo.cpp +++ b/src/mame/drivers/novag_diablo.cpp @@ -299,6 +299,7 @@ void diablo_state::diablo68k(machine_config &config) SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(100)); + m_board->set_nvram(true); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_LCD); diff --git a/src/mame/drivers/novag_sexpert.cpp b/src/mame/drivers/novag_sexpert.cpp index 20a8588f699..533e675c182 100644 --- a/src/mame/drivers/novag_sexpert.cpp +++ b/src/mame/drivers/novag_sexpert.cpp @@ -429,6 +429,7 @@ void sexpert_state::sexpert(machine_config &config) SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(200)); + m_board->set_nvram(true); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_LCD); @@ -472,6 +473,7 @@ void sforte_state::sforte(machine_config &config) /* basic machine hardware */ m_maincpu->set_addrmap(AS_PROGRAM, &sforte_state::sforte_map); m_irq_on->set_start_delay(m_irq_on->period() - attotime::from_usec(10)); // tlow measured between 8us and 12us (unstable) + m_board->set_type(sensorboard_device::BUTTONS); config.set_default_layout(layout_novag_sforte); diff --git a/src/mame/drivers/saitek_corona.cpp b/src/mame/drivers/saitek_corona.cpp index c182c62e911..3e6a20538de 100644 --- a/src/mame/drivers/saitek_corona.cpp +++ b/src/mame/drivers/saitek_corona.cpp @@ -283,6 +283,7 @@ void corona_state::corona(machine_config &config) SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(200)); + m_board->set_nvram(true); /* video hardware */ PWM_DISPLAY(config, m_display).set_size(3+8, 8); diff --git a/src/mame/drivers/saitek_mark5.cpp b/src/mame/drivers/saitek_mark5.cpp index bb7a8e98dbe..a285a74ca4c 100644 --- a/src/mame/drivers/saitek_mark5.cpp +++ b/src/mame/drivers/saitek_mark5.cpp @@ -457,6 +457,7 @@ void mark5_state::mark6(machine_config &config) SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(150)); + m_board->set_nvram(true); PWM_DISPLAY(config, m_display[3]).set_size(8, 8); m_display[3]->set_bri_levels(0.001); diff --git a/src/mame/drivers/saitek_risc2500.cpp b/src/mame/drivers/saitek_risc2500.cpp index 9a225ecbcec..b244bc842e1 100644 --- a/src/mame/drivers/saitek_risc2500.cpp +++ b/src/mame/drivers/saitek_risc2500.cpp @@ -301,6 +301,7 @@ void risc2500_state::risc2500(machine_config &config) m_board->set_type(sensorboard_device::BUTTONS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(100)); + m_board->set_nvram(true); RAM(config, m_ram).set_default_size("2M").set_extra_options("128K, 256K, 512K, 1M, 2M"); diff --git a/src/mame/drivers/saitek_simultano.cpp b/src/mame/drivers/saitek_simultano.cpp index cb5f663f9df..46b6d5d6e4e 100644 --- a/src/mame/drivers/saitek_simultano.cpp +++ b/src/mame/drivers/saitek_simultano.cpp @@ -312,6 +312,7 @@ void simultano_state::simultano(machine_config &config) SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(350)); + m_board->set_nvram(true); /* video hardware */ SED1502(config, m_lcd, 32768).write_segs().set(FUNC(simultano_state::lcd_output_w)); diff --git a/src/mame/drivers/saitek_stratos.cpp b/src/mame/drivers/saitek_stratos.cpp index 9588163fd3e..278d5734178 100644 --- a/src/mame/drivers/saitek_stratos.cpp +++ b/src/mame/drivers/saitek_stratos.cpp @@ -483,6 +483,7 @@ void stratos_state::stratos(machine_config &config) SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); m_board->set_delay(attotime::from_msec(350)); + m_board->set_nvram(true); /* video hardware */ PWM_DISPLAY(config, m_display).set_size(2+4, 8+1); diff --git a/src/mame/drivers/tasc.cpp b/src/mame/drivers/tasc.cpp index e3b59c87f24..4d02c8014c4 100644 --- a/src/mame/drivers/tasc.cpp +++ b/src/mame/drivers/tasc.cpp @@ -233,6 +233,7 @@ void tasc_state::tasc(machine_config &config) m_lcd->set_fs(1); // font size 6x8 TASC_SB30(config, m_smartboard); + subdevice<sensorboard_device>("smartboard:board")->set_nvram(true); config.set_default_layout(layout_tascr30); |