From 8acaf0366b57aaee95dfb86ba3080b6c6a0cbe9e Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 10 Mar 2014 17:20:05 +0000 Subject: [PATCH] (MESS) fixed specialm and specialp debug crash and removed some trampolines (nw) --- src/mess/audio/special.c | 25 +++++++++++++++++++------ src/mess/drivers/special.c | 16 ++++++++-------- src/mess/includes/special.h | 13 +++++-------- src/mess/machine/special.c | 17 ----------------- 4 files changed, 32 insertions(+), 39 deletions(-) diff --git a/src/mess/audio/special.c b/src/mess/audio/special.c index 27ddf666ba1..e5b37e5ceb7 100644 --- a/src/mess/audio/special.c +++ b/src/mess/audio/special.c @@ -76,11 +76,24 @@ void specimx_sound_device::sound_stream_update(sound_stream &stream, stream_samp } -void specimx_sound_device::set_input(int index, int state) +//------------------------------------------------- +// PIT callbacks +//------------------------------------------------- + +WRITE_LINE_MEMBER(specimx_sound_device::set_input_ch0) { - if (m_mixer_channel!=NULL) - { - m_mixer_channel->update(); - } - m_specimx_input[index] = state; + m_mixer_channel->update(); + m_specimx_input[0] = state; +} + +WRITE_LINE_MEMBER(specimx_sound_device::set_input_ch1) +{ + m_mixer_channel->update(); + m_specimx_input[1] = state; +} + +WRITE_LINE_MEMBER(specimx_sound_device::set_input_ch2) +{ + m_mixer_channel->update(); + m_specimx_input[2] = state; } diff --git a/src/mess/drivers/special.c b/src/mess/drivers/special.c index 8fc90f85f92..b80113e0741 100644 --- a/src/mess/drivers/special.c +++ b/src/mess/drivers/special.c @@ -384,14 +384,6 @@ static MACHINE_CONFIG_START( special, special_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* Devices */ - MCFG_DEVICE_ADD( "pit8253", PIT8253, 0) - MCFG_PIT8253_CLK0(2000000) - MCFG_PIT8253_OUT0_HANDLER(WRITELINE(special_state, specimx_pit8253_out0_changed)) - MCFG_PIT8253_CLK1(2000000) - MCFG_PIT8253_OUT1_HANDLER(WRITELINE(special_state, specimx_pit8253_out1_changed)) - MCFG_PIT8253_CLK2(2000000) - MCFG_PIT8253_OUT2_HANDLER(WRITELINE(special_state, specimx_pit8253_out2_changed)) - MCFG_I8255_ADD( "ppi8255", specialist_ppi8255_interface ) MCFG_CASSETTE_ADD( "cassette", special_cassette_interface ) MCFG_SOFTWARE_LIST_ADD("cass_list","special_cass") @@ -435,6 +427,14 @@ static MACHINE_CONFIG_DERIVED( specimx, special ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* Devices */ + MCFG_DEVICE_ADD( "pit8253", PIT8253, 0) + MCFG_PIT8253_CLK0(2000000) + MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("custom", specimx_sound_device, set_input_ch0)) + MCFG_PIT8253_CLK1(2000000) + MCFG_PIT8253_OUT1_HANDLER(DEVWRITELINE("custom", specimx_sound_device, set_input_ch1)) + MCFG_PIT8253_CLK2(2000000) + MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("custom", specimx_sound_device, set_input_ch2)) + MCFG_DEVICE_REMOVE("ppi8255") MCFG_I8255_ADD( "ppi8255", specimx_ppi8255_interface ) MCFG_FD1793x_ADD("fd1793", XTAL_8MHz / 8) diff --git a/src/mess/includes/special.h b/src/mess/includes/special.h index 5d6c7fa167b..c285228c87b 100644 --- a/src/mess/includes/special.h +++ b/src/mess/includes/special.h @@ -83,9 +83,6 @@ public: DECLARE_WRITE8_MEMBER(specialist_8255_porta_w); DECLARE_WRITE8_MEMBER(specialist_8255_portb_w); DECLARE_WRITE8_MEMBER(specialist_8255_portc_w); - DECLARE_WRITE_LINE_MEMBER(specimx_pit8253_out0_changed); - DECLARE_WRITE_LINE_MEMBER(specimx_pit8253_out1_changed); - DECLARE_WRITE_LINE_MEMBER(specimx_pit8253_out2_changed); void specimx_set_bank(offs_t i, UINT8 data); void erik_set_bank(); UINT8 *m_specimx_colorram; @@ -93,7 +90,6 @@ public: UINT8 m_erik_color_2; UINT8 m_erik_background; UINT8 m_specimx_color; - specimx_sound_device *m_specimx_audio; int m_specialist_8255_porta; int m_specialist_8255_portb; int m_specialist_8255_portc; @@ -173,7 +169,11 @@ class specimx_sound_device : public device_t, public: specimx_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); ~specimx_sound_device() { } - + + DECLARE_WRITE_LINE_MEMBER(set_input_ch0); + DECLARE_WRITE_LINE_MEMBER(set_input_ch1); + DECLARE_WRITE_LINE_MEMBER(set_input_ch2); + protected: // device-level overrides virtual void device_start(); @@ -181,9 +181,6 @@ protected: // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples); -public: - void set_input(int index, int state); - private: sound_stream *m_mixer_channel; int m_specimx_input[3]; diff --git a/src/mess/machine/special.c b/src/mess/machine/special.c index afba38f10a3..7d2fc954c9b 100644 --- a/src/mess/machine/special.c +++ b/src/mess/machine/special.c @@ -235,25 +235,8 @@ WRITE8_MEMBER( special_state::specimx_select_bank ) specimx_set_bank(offset, data); } -WRITE_LINE_MEMBER( special_state::specimx_pit8253_out0_changed ) -{ - m_specimx_audio->set_input( 0, state ); -} - -WRITE_LINE_MEMBER( special_state::specimx_pit8253_out1_changed ) -{ - m_specimx_audio->set_input( 1, state ); -} - -WRITE_LINE_MEMBER( special_state::specimx_pit8253_out2_changed ) -{ - m_specimx_audio->set_input( 2, state ); -} - - MACHINE_START_MEMBER(special_state,specimx) { - m_specimx_audio = machine().device("custom"); m_drive = 0; m_fdc->setup_drq_cb(fd1793_t::line_cb(FUNC(special_state::fdc_drq), this)); }