diff options
Diffstat (limited to 'src/mame/drivers/jedi.cpp')
-rw-r--r-- | src/mame/drivers/jedi.cpp | 59 |
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 |