summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author smf- <smf-@users.noreply.github.com>2014-01-27 22:42:33 +0000
committer smf- <smf-@users.noreply.github.com>2014-01-27 22:42:33 +0000
commit0a69cdbe34e8ca0ec234847e875ca228aac36e62 (patch)
tree65f8766bbed4df58d715c88a002f61d1cd8ae28a /src
parentaedda1342ce96a9b1d0d2c4d92e06af967fd12ef (diff)
Simulates key press to format internal ram instead of using a rom patch. (nw)
Diffstat (limited to 'src')
-rw-r--r--src/mess/drivers/clcd.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/mess/drivers/clcd.c b/src/mess/drivers/clcd.c
index ac53380110b..ec629e57cae 100644
--- a/src/mess/drivers/clcd.c
+++ b/src/mess/drivers/clcd.c
@@ -50,6 +50,7 @@ public:
m_key_poll(0),
m_key_column(0),
m_key_shift(0),
+ m_key_force_format(0),
m_col0(*this, "COL0"),
m_col1(*this, "COL1"),
m_col2(*this, "COL2"),
@@ -449,6 +450,13 @@ public:
m_key_shift |= read_column(i) << 8;
}
}
+
+ if (m_key_force_format)
+ {
+ m_key_shift = 0x15; // Simulate holding CBM+SHIFT+STOP if you have no NVRAM
+
+ m_key_force_format--;
+ }
}
}
}
@@ -484,6 +492,11 @@ public:
return m_ram;
}
+ void force_format()
+ {
+ m_key_force_format = 10;
+ }
+
private:
required_device<cpu_device> m_maincpu;
required_device<via6522_device> m_via0;
@@ -509,6 +522,7 @@ private:
int m_key_poll;
int m_key_column;
UINT16 m_key_shift;
+ int m_key_force_format;
required_ioport m_col0;
required_ioport m_col1;
required_ioport m_col2;
@@ -534,12 +548,7 @@ static NVRAM_HANDLER(clcd)
}
else
{
- // leave whatever ram device defaulted to
-
- //// HACK: this forces ram to be initialised
- UINT8 *ROM = state->memregion("maincpu")->base();
- ROM[0x185bb] = 0xea;
- ROM[0x185bc] = 0xea;
+ state->force_format();
}
}