diff options
Diffstat (limited to 'src/mame/drivers/mrflea.c')
-rw-r--r-- | src/mame/drivers/mrflea.c | 83 |
1 files changed, 24 insertions, 59 deletions
diff --git a/src/mame/drivers/mrflea.c b/src/mame/drivers/mrflea.c index 6c379a0f291..a77fa59112d 100644 --- a/src/mame/drivers/mrflea.c +++ b/src/mame/drivers/mrflea.c @@ -49,10 +49,7 @@ static int mrflea_main; static int mrflea_status; -static int mrflea_select0; static int mrflea_select1; -static int mrflea_select2; -static int mrflea_select3; extern WRITE8_HANDLER( mrflea_gfx_bank_w ); extern WRITE8_HANDLER( mrflea_videoram_w ); @@ -182,68 +179,18 @@ ADDRESS_MAP_END /*******************************************************/ -static WRITE8_HANDLER( mrflea_select0_w ){ - mrflea_select0 = data; -} - static WRITE8_HANDLER( mrflea_select1_w ){ mrflea_select1 = data; } -static WRITE8_HANDLER( mrflea_select2_w ){ - mrflea_select2 = data; -} - -static WRITE8_HANDLER( mrflea_select3_w ){ - mrflea_select3 = data; -} - -/*******************************************************/ - -static READ8_HANDLER( mrflea_input0_r ) -{ - if( mrflea_select0 == 0x0f ) return input_port_read(space->machine, "IN0"); - if( mrflea_select0 == 0x0e ) return input_port_read(space->machine, "IN1"); - return 0x00; -} - static READ8_HANDLER( mrflea_input1_r ) { return 0x00; } -static READ8_HANDLER( mrflea_input2_r ) -{ - if( mrflea_select2 == 0x0f ) return input_port_read(space->machine, "DSW1"); - if( mrflea_select2 == 0x0e ) return input_port_read(space->machine, "DSW2"); - return 0x00; -} - -static READ8_HANDLER( mrflea_input3_r ) -{ - return 0x00; -} - -/*******************************************************/ - -static WRITE8_HANDLER( mrflea_data0_w ){ - ay8910_control_port_0_w( space, offset, mrflea_select0 ); - ay8910_write_port_0_w( space, offset, data ); -} - static WRITE8_HANDLER( mrflea_data1_w ){ } -static WRITE8_HANDLER( mrflea_data2_w ){ - ay8910_control_port_1_w( space, offset, mrflea_select2 ); - ay8910_write_port_1_w( space, offset, data ); -} - -static WRITE8_HANDLER( mrflea_data3_w ){ - ay8910_control_port_2_w( space, offset, mrflea_select3 ); - ay8910_write_port_2_w( space, offset, data ); -} - static ADDRESS_MAP_START( inout_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_WRITE(SMH_NOP) /* watchdog */ @@ -253,18 +200,34 @@ static ADDRESS_MAP_START( inout_io_map, ADDRESS_SPACE_IO, 8 ) AM_RANGE(0x21, 0x21) AM_WRITE(mrflea_main_w) AM_RANGE(0x22, 0x22) AM_READ(mrflea_io_status_r) AM_RANGE(0x23, 0x23) AM_WRITE(SMH_NOP) /* 0xb4,0x09,0x05 */ - AM_RANGE(0x40, 0x40) AM_READWRITE(mrflea_input0_r, mrflea_data0_w) - AM_RANGE(0x41, 0x41) AM_WRITE(mrflea_select0_w) + AM_RANGE(0x40, 0x40) AM_DEVREAD(SOUND, "ay1", ay8910_r) + AM_RANGE(0x40, 0x41) AM_DEVWRITE(SOUND, "ay1", ay8910_data_address_w) AM_RANGE(0x42, 0x42) AM_READWRITE(mrflea_input1_r, mrflea_data1_w) AM_RANGE(0x43, 0x43) AM_WRITE(mrflea_select1_w) - AM_RANGE(0x44, 0x44) AM_READWRITE(mrflea_input2_r, mrflea_data2_w) - AM_RANGE(0x45, 0x45) AM_WRITE(mrflea_select2_w) - AM_RANGE(0x46, 0x46) AM_READWRITE(mrflea_input3_r, mrflea_data3_w) - AM_RANGE(0x47, 0x47) AM_WRITE(mrflea_select3_w) + AM_RANGE(0x44, 0x44) AM_DEVREAD(SOUND, "ay2", ay8910_r) + AM_RANGE(0x44, 0x45) AM_DEVWRITE(SOUND, "ay2", ay8910_data_address_w) + AM_RANGE(0x46, 0x46) AM_DEVREAD(SOUND, "ay3", ay8910_r) + AM_RANGE(0x46, 0x47) AM_DEVWRITE(SOUND, "ay3", ay8910_data_address_w) ADDRESS_MAP_END /*******************************************************/ +static const ay8910_interface mrflea_ay8910_interface_0 = +{ + AY8910_LEGACY_OUTPUT, + AY8910_DEFAULT_LOADS, + DEVCB_INPUT_PORT("IN1"), + DEVCB_INPUT_PORT("IN0") +}; + +static const ay8910_interface mrflea_ay8910_interface_1 = +{ + AY8910_LEGACY_OUTPUT, + AY8910_DEFAULT_LOADS, + DEVCB_INPUT_PORT("DSW1"), + DEVCB_INPUT_PORT("DSW0") +}; + static MACHINE_DRIVER_START( mrflea ) /* basic machine hardware */ @@ -298,9 +261,11 @@ static MACHINE_DRIVER_START( mrflea ) MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SOUND_ADD("ay1", AY8910, 2000000) + MDRV_SOUND_CONFIG(mrflea_ay8910_interface_0) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MDRV_SOUND_ADD("ay2", AY8910, 2000000) + MDRV_SOUND_CONFIG(mrflea_ay8910_interface_1) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MDRV_SOUND_ADD("ay3", AY8910, 2000000) |