diff options
Diffstat (limited to 'src/mame/drivers/88games.c')
-rw-r--r-- | src/mame/drivers/88games.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/mame/drivers/88games.c b/src/mame/drivers/88games.c index a3222190488..6c1407e8cc7 100644 --- a/src/mame/drivers/88games.c +++ b/src/mame/drivers/88games.c @@ -107,17 +107,21 @@ static READ8_HANDLER( cheat2_r ) return res; } -static int speech_chip; +static char speech_chip[8]; static WRITE8_HANDLER( speech_control_w ) { - speech_chip = ( data & 4 ) ? 1 : 0; - upd7759_reset_w( speech_chip, data & 2 ); - upd7759_start_w( speech_chip, data & 1 ); + const device_config *upd; + + strcpy(speech_chip, ( data & 4 ) ? "upd2" : "upd1"); + + upd = devtag_get_device(space->machine, SOUND, speech_chip); + upd7759_reset_w( upd, data & 2 ); + upd7759_start_w( upd, data & 1 ); } static WRITE8_HANDLER( speech_msg_w ) { - upd7759_port_w( speech_chip, data ); + upd7759_port_w( devtag_get_device(space->machine, SOUND, speech_chip), 0, data ); } static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) @@ -147,8 +151,7 @@ static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x9000, 0x9000) AM_WRITE(speech_msg_w) AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r) - AM_RANGE(0xc000, 0xc000) AM_WRITE(ym2151_register_port_0_w) - AM_RANGE(0xc001, 0xc001) AM_READWRITE(ym2151_status_port_0_r, ym2151_data_port_0_w) + AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE(SOUND, "ym", ym2151_r, ym2151_w) AM_RANGE(0xe000, 0xe000) AM_WRITE(speech_control_w) ADDRESS_MAP_END @@ -521,7 +524,7 @@ static MACHINE_START( 88games ) { state_save_register_global(machine, videobank); state_save_register_global(machine, zoomreadroms); - state_save_register_global(machine, speech_chip); + state_save_register_global_array(machine, speech_chip); } static DRIVER_INIT( 88games ) |