(MESS) fixed specialm and specialp debug crash and removed some trampolines (nw)

This commit is contained in:
Ivan Vangelista 2014-03-10 17:20:05 +00:00
parent d10ce2efeb
commit 8acaf0366b
4 changed files with 32 additions and 39 deletions

View File

@ -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
if (m_mixer_channel!=NULL) //-------------------------------------------------
WRITE_LINE_MEMBER(specimx_sound_device::set_input_ch0)
{ {
m_mixer_channel->update(); m_mixer_channel->update();
m_specimx_input[0] = state;
} }
m_specimx_input[index] = 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;
} }

View File

@ -384,14 +384,6 @@ static MACHINE_CONFIG_START( special, special_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* Devices */ /* 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_I8255_ADD( "ppi8255", specialist_ppi8255_interface )
MCFG_CASSETTE_ADD( "cassette", special_cassette_interface ) MCFG_CASSETTE_ADD( "cassette", special_cassette_interface )
MCFG_SOFTWARE_LIST_ADD("cass_list","special_cass") 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) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* Devices */ /* 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_DEVICE_REMOVE("ppi8255")
MCFG_I8255_ADD( "ppi8255", specimx_ppi8255_interface ) MCFG_I8255_ADD( "ppi8255", specimx_ppi8255_interface )
MCFG_FD1793x_ADD("fd1793", XTAL_8MHz / 8) MCFG_FD1793x_ADD("fd1793", XTAL_8MHz / 8)

View File

@ -83,9 +83,6 @@ public:
DECLARE_WRITE8_MEMBER(specialist_8255_porta_w); DECLARE_WRITE8_MEMBER(specialist_8255_porta_w);
DECLARE_WRITE8_MEMBER(specialist_8255_portb_w); DECLARE_WRITE8_MEMBER(specialist_8255_portb_w);
DECLARE_WRITE8_MEMBER(specialist_8255_portc_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 specimx_set_bank(offs_t i, UINT8 data);
void erik_set_bank(); void erik_set_bank();
UINT8 *m_specimx_colorram; UINT8 *m_specimx_colorram;
@ -93,7 +90,6 @@ public:
UINT8 m_erik_color_2; UINT8 m_erik_color_2;
UINT8 m_erik_background; UINT8 m_erik_background;
UINT8 m_specimx_color; UINT8 m_specimx_color;
specimx_sound_device *m_specimx_audio;
int m_specialist_8255_porta; int m_specialist_8255_porta;
int m_specialist_8255_portb; int m_specialist_8255_portb;
int m_specialist_8255_portc; int m_specialist_8255_portc;
@ -174,6 +170,10 @@ public:
specimx_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); specimx_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~specimx_sound_device() { } ~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: protected:
// device-level overrides // device-level overrides
virtual void device_start(); virtual void device_start();
@ -181,9 +181,6 @@ protected:
// sound stream update overrides // sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples); 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: private:
sound_stream *m_mixer_channel; sound_stream *m_mixer_channel;
int m_specimx_input[3]; int m_specimx_input[3];

View File

@ -235,25 +235,8 @@ WRITE8_MEMBER( special_state::specimx_select_bank )
specimx_set_bank(offset, data); 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) MACHINE_START_MEMBER(special_state,specimx)
{ {
m_specimx_audio = machine().device<specimx_sound_device>("custom");
m_drive = 0; m_drive = 0;
m_fdc->setup_drq_cb(fd1793_t::line_cb(FUNC(special_state::fdc_drq), this)); m_fdc->setup_drq_cb(fd1793_t::line_cb(FUNC(special_state::fdc_drq), this));
} }