diff options
Diffstat (limited to 'src/devices/bus/saturn/bram.cpp')
-rw-r--r-- | src/devices/bus/saturn/bram.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/devices/bus/saturn/bram.cpp b/src/devices/bus/saturn/bram.cpp index cdcc7ad4376..d8ee2764da0 100644 --- a/src/devices/bus/saturn/bram.cpp +++ b/src/devices/bus/saturn/bram.cpp @@ -55,14 +55,31 @@ saturn_bram32mb_device::saturn_bram32mb_device(const machine_config &mconfig, co void saturn_bram_device::device_start() { + if (m_ext_bram.empty()) + nvram_enable_backup(false); } void saturn_bram_device::device_reset() { } +bool saturn_bram_device::nvram_read(util::read_stream &file) +{ + auto const [err, actual] = read(file, &m_ext_bram[0], m_ext_bram.size()); + return !err && (actual == m_ext_bram.size()); +} + +bool saturn_bram_device::nvram_write(util::write_stream &file) +{ + auto const [err, actual] = write(file, &m_ext_bram[0], m_ext_bram.size()); + return !err; +} + void saturn_bram_device::nvram_default() { + if (m_ext_bram.empty()) + return; + static const uint8_t init[16] = { 'B', 'a', 'c', 'k', 'U', 'p', 'R', 'a', 'm', ' ', 'F', 'o', 'r', 'm', 'a', 't' }; memset(&m_ext_bram[0], 0, m_ext_bram.size()); @@ -81,7 +98,7 @@ void saturn_bram_device::nvram_default() // Battery RAM: single chip -READ32_MEMBER(saturn_bram_device::read_ext_bram) +uint32_t saturn_bram_device::read_ext_bram(offs_t offset) { if (offset < m_ext_bram.size()/2) return (m_ext_bram[offset * 2] << 16) | m_ext_bram[offset * 2 + 1]; @@ -92,7 +109,7 @@ READ32_MEMBER(saturn_bram_device::read_ext_bram) } } -WRITE32_MEMBER(saturn_bram_device::write_ext_bram) +void saturn_bram_device::write_ext_bram(offs_t offset, uint32_t data, uint32_t mem_mask) { if (offset < m_ext_bram.size()/2) { |