diff options
author | 2017-03-26 15:55:13 +0800 | |
---|---|---|
committer | 2017-03-27 23:36:02 +0800 | |
commit | 3e8ae15bfa696e7d8c27bfde35a02163d559261c (patch) | |
tree | 8840006b558273cf7b431520482cf5f0193e5a92 /src/devices/bus/isa/sblaster.cpp | |
parent | 473edbd7bcac6d6ae9fe610d95d25eceaf7c9033 (diff) |
sblaster: save DSP state
Diffstat (limited to 'src/devices/bus/isa/sblaster.cpp')
-rw-r--r-- | src/devices/bus/isa/sblaster.cpp | 77 |
1 files changed, 57 insertions, 20 deletions
diff --git a/src/devices/bus/isa/sblaster.cpp b/src/devices/bus/isa/sblaster.cpp index 64998b89a71..f5ebf0d56fc 100644 --- a/src/devices/bus/isa/sblaster.cpp +++ b/src/devices/bus/isa/sblaster.cpp @@ -1292,22 +1292,7 @@ void sb8_device::device_start() m_isa->install_device(0x0228, 0x0229, read8_delegate( FUNC(sb8_device::ym3812_16_r), this ), write8_delegate( FUNC(sb8_device::ym3812_16_w), this ) ); } - m_timer = timer_alloc(0, nullptr); - - save_item(NAME(m_dack_out)); - save_item(NAME(m_onebyte_midi)); - save_item(NAME(m_uart_midi)); - save_item(NAME(m_uart_irq)); - save_item(NAME(m_mpu_midi)); - save_item(NAME(m_rx_waiting)); - save_item(NAME(m_tx_waiting)); - save_item(NAME(m_recvring)); - save_item(NAME(m_xmitring)); - save_item(NAME(m_xmit_read)); - save_item(NAME(m_xmit_write)); - save_item(NAME(m_recv_read)); - save_item(NAME(m_recv_write)); - save_item(NAME(m_tx_busy)); + sb_device::device_start(); } void isa8_sblaster1_0_device::device_start() @@ -1333,20 +1318,17 @@ void isa8_sblaster1_5_device::device_start() void sb16_device::device_start() { ymf262_device *ymf262 = subdevice<ymf262_device>("ymf262"); - m_isa->install_device(0x0200, 0x0207, read8_delegate(FUNC(pc_joy_device::joy_port_r), subdevice<pc_joy_device>("pc_joy")), write8_delegate(FUNC(pc_joy_device::joy_port_w), subdevice<pc_joy_device>("pc_joy"))); - m_isa->install_device(0x0224, 0x0225, read8_delegate(FUNC(sb16_device::mixer_r), this), write8_delegate(FUNC(sb16_device::mixer_w), this)); m_isa->install_device(0x0226, 0x0227, read8_delegate(FUNC(sb_device::dsp_reset_r), this), write8_delegate(FUNC(sb_device::dsp_reset_w), this)); m_isa->install_device(0x022a, 0x022b, read8_delegate(FUNC(sb_device::dsp_data_r), this), write8_delegate(FUNC(sb_device::dsp_data_w), this) ); m_isa->install_device(0x022c, 0x022d, read8_delegate(FUNC(sb_device::dsp_wbuf_status_r), this), write8_delegate(FUNC(sb_device::dsp_cmd_w), this) ); m_isa->install_device(0x022e, 0x022f, read8_delegate(FUNC(sb_device::dsp_rbuf_status_r), this), write8_delegate(FUNC(sb_device::dsp_rbuf_status_w), this) ); + m_isa->install_device(0x0224, 0x0225, read8_delegate(FUNC(sb16_device::mixer_r), this), write8_delegate(FUNC(sb16_device::mixer_w), this)); m_isa->install_device(0x0330, 0x0331, read8_delegate(FUNC(sb16_device::mpu401_r), this), write8_delegate(FUNC(sb16_device::mpu401_w), this)); m_isa->install_device(0x0388, 0x038b, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); m_isa->install_device(0x0220, 0x0223, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); m_isa->install_device(0x0228, 0x0229, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); - m_timer = timer_alloc(0, nullptr); - save_item(NAME(m_mixer.data)); save_item(NAME(m_mixer.status)); save_item(NAME(m_mixer.main_vol)); @@ -1363,6 +1345,8 @@ void sb16_device::device_start() save_item(NAME(m_mixer.agc)); save_item(NAME(m_mixer.treble)); save_item(NAME(m_mixer.bass)); + + sb_device::device_start(); } void isa16_sblaster16_device::device_start() @@ -1374,6 +1358,59 @@ void isa16_sblaster16_device::device_start() sb16_device::device_start(); } +void sb_device::device_start() +{ + m_timer = timer_alloc(0, nullptr); + + save_item(NAME(m_dack_out)); + save_item(NAME(m_onebyte_midi)); + save_item(NAME(m_uart_midi)); + save_item(NAME(m_uart_irq)); + save_item(NAME(m_mpu_midi)); + save_item(NAME(m_rx_waiting)); + save_item(NAME(m_tx_waiting)); + save_item(NAME(m_recvring)); + save_item(NAME(m_xmitring)); + save_item(NAME(m_xmit_read)); + save_item(NAME(m_xmit_write)); + save_item(NAME(m_recv_read)); + save_item(NAME(m_recv_write)); + save_item(NAME(m_tx_busy)); + + save_item(NAME(m_dsp.reset_latch)); + save_item(NAME(m_dsp.rbuf_status)); + save_item(NAME(m_dsp.wbuf_status)); + save_item(NAME(m_dsp.fifo)); + save_item(NAME(m_dsp.fifo_ptr)); + save_item(NAME(m_dsp.fifo_r)); + save_item(NAME(m_dsp.fifo_r_ptr)); + + save_item(NAME(m_dsp.test_reg)); + save_item(NAME(m_dsp.speaker_on)); + save_item(NAME(m_dsp.dma_no_irq)); + save_item(NAME(m_dsp.prot_count)); + save_item(NAME(m_dsp.prot_value)); + save_item(NAME(m_dsp.frequency)); + save_item(NAME(m_dsp.adc_freq)); + save_item(NAME(m_dsp.dma_length)); + save_item(NAME(m_dsp.dma_transferred)); + save_item(NAME(m_dsp.adc_length)); + save_item(NAME(m_dsp.adc_transferred)); + save_item(NAME(m_dsp.dma_autoinit)); + save_item(NAME(m_dsp.data)); + save_item(NAME(m_dsp.d_wptr)); + save_item(NAME(m_dsp.d_rptr)); + save_item(NAME(m_dsp.dma_timer_started)); + save_item(NAME(m_dsp.dma_throttled)); + save_item(NAME(m_dsp.flags)); + save_item(NAME(m_dsp.irq_active)); + save_item(NAME(m_dsp.adpcm_new_ref)); + save_item(NAME(m_dsp.adpcm_ref)); + save_item(NAME(m_dsp.adpcm_step)); + save_item(NAME(m_dsp.adpcm_count)); + +} + //------------------------------------------------- // device_reset - device-specific reset //------------------------------------------------- |