(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
//-------------------------------------------------
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;
}

View File

@ -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)

View File

@ -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];

View File

@ -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<specimx_sound_device>("custom");
m_drive = 0;
m_fdc->setup_drq_cb(fd1793_t::line_cb(FUNC(special_state::fdc_drq), this));
}