summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/jedi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/jedi.cpp')
-rw-r--r--src/mame/drivers/jedi.cpp59
1 files changed, 40 insertions, 19 deletions
diff --git a/src/mame/drivers/jedi.cpp b/src/mame/drivers/jedi.cpp
index 7411bd5590f..a827529ddef 100644
--- a/src/mame/drivers/jedi.cpp
+++ b/src/mame/drivers/jedi.cpp
@@ -165,9 +165,6 @@ void jedi_state::machine_start()
/* configure the banks */
membank("bank1")->configure_entries(0, 3, memregion("maincpu")->base() + 0x10000, 0x4000);
-
- /* set up save state */
- save_item(NAME(m_nvram_enabled));
}
@@ -180,9 +177,8 @@ void jedi_state::machine_start()
void jedi_state::machine_reset()
{
- /* init globals */
- m_a2d_select = 0;
- m_nvram_enabled = 0;
+ m_novram[0]->recall(1);
+ m_novram[1]->recall(1);
}
@@ -223,20 +219,36 @@ WRITE_LINE_MEMBER(jedi_state::coin_counter_right_w)
/*************************************
*
- * NVRAM
+ * X2212-30 NOVRAM
*
*************************************/
-WRITE8_MEMBER(jedi_state::nvram_data_w)
+READ8_MEMBER(jedi_state::novram_data_r)
+{
+ return (m_novram[0]->read(space, offset) & 0x0f) | (m_novram[1]->read(space, offset) << 4);
+}
+
+
+WRITE8_MEMBER(jedi_state::novram_data_w)
{
- if (m_nvram_enabled)
- m_nvram[offset] = data;
+ m_novram[0]->write(space, offset, data & 0x0f);
+ m_novram[1]->write(space, offset, data >> 4);
}
-WRITE8_MEMBER(jedi_state::nvram_enable_w)
+WRITE8_MEMBER(jedi_state::novram_recall_w)
{
- m_nvram_enabled = ~offset & 1;
+ m_novram[0]->recall(BIT(offset, 0));
+ m_novram[1]->recall(BIT(offset, 0));
+}
+
+
+WRITE8_MEMBER(jedi_state::novram_store_w)
+{
+ m_novram[0]->store(1);
+ m_novram[1]->store(1);
+ m_novram[0]->store(0);
+ m_novram[1]->store(0);
}
@@ -250,19 +262,19 @@ WRITE8_MEMBER(jedi_state::nvram_enable_w)
void jedi_state::main_map(address_map &map)
{
map(0x0000, 0x07ff).ram();
- map(0x0800, 0x08ff).mirror(0x0300).ram().w(FUNC(jedi_state::nvram_data_w)).share("nvram");
+ map(0x0800, 0x08ff).mirror(0x0300).rw(FUNC(jedi_state::novram_data_r), FUNC(jedi_state::novram_data_w));
map(0x0c00, 0x0c00).mirror(0x03fe).portr("0c00").nopw();
map(0x0c01, 0x0c01).mirror(0x03fe).portr("0c01").nopw();
map(0x1000, 0x13ff).noprw();
- map(0x1400, 0x1400).mirror(0x03ff).r(FUNC(jedi_state::jedi_audio_ack_latch_r)).nopw();
+ map(0x1400, 0x1400).mirror(0x03ff).r("sacklatch", FUNC(generic_latch_8_device::read)).nopw();
map(0x1800, 0x1800).mirror(0x03ff).r("adc", FUNC(adc0808_device::data_r)).nopw();
- map(0x1c00, 0x1c01).mirror(0x007e).nopr().w(FUNC(jedi_state::nvram_enable_w));
+ map(0x1c00, 0x1c01).mirror(0x007e).nopr().w(FUNC(jedi_state::novram_recall_w));
map(0x1c80, 0x1c87).mirror(0x0078).nopr().w("adc", FUNC(adc0808_device::address_offset_start_w));
- map(0x1d00, 0x1d00).mirror(0x007f).noprw(); /* write: NVRAM store */
+ map(0x1d00, 0x1d00).mirror(0x007f).nopr().w(FUNC(jedi_state::novram_store_w));
map(0x1d80, 0x1d80).mirror(0x007f).nopr().w("watchdog", FUNC(watchdog_timer_device::reset_w));
map(0x1e00, 0x1e00).mirror(0x007f).nopr().w(FUNC(jedi_state::main_irq_ack_w));
map(0x1e80, 0x1e87).mirror(0x0078).nopr().w("outlatch", FUNC(ls259_device::write_d7));
- map(0x1f00, 0x1f00).mirror(0x007f).nopr().w(FUNC(jedi_state::jedi_audio_latch_w));
+ map(0x1f00, 0x1f00).mirror(0x007f).nopr().w("soundlatch", FUNC(generic_latch_8_device::write));
map(0x1f80, 0x1f80).mirror(0x007f).nopr().w(FUNC(jedi_state::rom_banksel_w));
map(0x2000, 0x27ff).ram().share("backgroundram");
map(0x2800, 0x2fff).ram().share("paletteram");
@@ -324,9 +336,10 @@ MACHINE_CONFIG_START(jedi_state::jedi)
MCFG_QUANTUM_TIME(attotime::from_hz(240))
- MCFG_NVRAM_ADD_0FILL("nvram")
+ MCFG_X2212_ADD("novram12b")
+ MCFG_X2212_ADD("novram12c")
- MCFG_DEVICE_ADD("adc", ADC0809, JEDI_AUDIO_CPU_OSC / 2 / 9)
+ MCFG_DEVICE_ADD("adc", ADC0809, JEDI_AUDIO_CPU_OSC / 2 / 9) // nominally 666 kHz
MCFG_ADC0808_IN0_CB(IOPORT("STICKY"))
MCFG_ADC0808_IN1_CB(NOOP) // SPARE
MCFG_ADC0808_IN2_CB(IOPORT("STICKX"))
@@ -386,6 +399,14 @@ ROM_START( jedi )
ROM_REGION( 0x1000, "proms", 0 ) /* background smoothing */
ROM_LOAD( "136030-117.bin", 0x0000, 0x0400, CRC(9831bd55) SHA1(12945ef2d1582914125b9ee591567034d71d6573) )
ROM_LOAD( "136030-118.bin", 0x0800, 0x0400, CRC(261fbfe7) SHA1(efc65a74a3718563a07b718e34d8a7aa23339a69) )
+
+ // NOVRAM default fills are specified to guarantee an invalid checksum
+ ROM_REGION( 0x100, "novram12b", 0 )
+ ROM_FILL( 0x00, 0x100, 0x0f )
+ ROM_FILL( 0x50, 0x010, 0x00 )
+ ROM_REGION( 0x100, "novram12c", 0 )
+ ROM_FILL( 0x00, 0x100, 0x0f )
+ ROM_FILL( 0x50, 0x010, 0x00 )
ROM_END