diff options
Diffstat (limited to 'src/devices/machine/sensorboard.cpp')
-rw-r--r-- | src/devices/machine/sensorboard.cpp | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/src/devices/machine/sensorboard.cpp b/src/devices/machine/sensorboard.cpp index 27c16277448..17996dcddd9 100644 --- a/src/devices/machine/sensorboard.cpp +++ b/src/devices/machine/sensorboard.cpp @@ -67,7 +67,7 @@ DEFINE_DEVICE_TYPE(SENSORBOARD, sensorboard_device, "sensorboard", "Sensorboard" sensorboard_device::sensorboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SENSORBOARD, tag, owner, clock), - m_nvram(*this, "position"), + device_nvram_interface(mconfig, *this), m_out_piece(*this, "piece_%c%u", 0U + 'a', 1U), m_out_pui(*this, "piece_ui%u", 0U), m_out_count(*this, "count_ui%u", 0U), @@ -127,8 +127,6 @@ void sensorboard_device::device_start() m_ulast = 0; m_usize = ARRAY_LENGTH(m_history); - m_nvram->set_base(m_curstate, sizeof(m_curstate)); - // register for savestates save_item(NAME(m_magnets)); save_item(NAME(m_inductive)); @@ -155,18 +153,6 @@ void sensorboard_device::device_start() save_item(NAME(m_sensordelay)); } -void sensorboard_device::nvram_init(nvram_device &nvram, void *data, size_t size) -{ - clear_board(); - m_custom_init_cb(1); -} - -void sensorboard_device::device_add_mconfig(machine_config &config) -{ - // 'nvram' is the last board position (m_curstate) - NVRAM(config, m_nvram).set_custom_handler(FUNC(sensorboard_device::nvram_init)); -} - void sensorboard_device::preset_chess(int state) { // set chessboard start position @@ -214,6 +200,32 @@ void sensorboard_device::device_reset() } +//------------------------------------------------- +// device_nvram_interface overrides +//------------------------------------------------- + +void sensorboard_device::nvram_default() +{ + clear_board(); + m_custom_init_cb(1); +} + +void sensorboard_device::nvram_read(emu_file &file) +{ + file.read(m_curstate, sizeof(m_curstate)); +} + +void sensorboard_device::nvram_write(emu_file &file) +{ + file.write(m_curstate, sizeof(m_curstate)); +} + +bool sensorboard_device::nvram_pre_write() +{ + return m_nvram_on; +} + + //------------------------------------------------- // public handlers |