summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/saturn/bram.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/saturn/bram.cpp')
-rw-r--r--src/devices/bus/saturn/bram.cpp21
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)
{